- 上一篇大概的描述了下常见的协议,以及网络模型后
- 这里当要依次描述下了,先说最熟悉的socket啊不,是应用层里的TCP和UDP了!
TCP和UDP的区别
- TCP
- Transmission Controller Protocol是传输控制协议
- 提供的是面向连接、可靠的字节流服务。
- 面向连接的可靠的 流式数据包传递,流式协议
- UDP
- User Data Protocol是用户数据协议
- 是一个简单的面向数据包的运输层协议。
- 无连接的 不可靠的 报文传输,报式协议
-
相同点:
- 都是传递数据的通信协议
-
不同点:
-
TCP是面向连接的通信协议,UDP则面向非连接
- TCP在连接时,会进行3次握手
- 主动发起连接请求端(客户端),发SYN标志位,携带序号
- 被动接受连接请求段(服务器) 回复ACK标志位,携带确认序号,发SYN标志位,携带序号
- 主动发起连接请求端(客户端),回复ACK标志位,携带确认序号
- ——第二个ACK发送完成,标志三次握手完成,连接建立成功
- ——服务器:Accept 函数方法
- ——客户端:Dial函数返回
- TCP在断开连接时,则会4次挥手
- 主动关闭连接请求端(客户端),发FIN标志位 携带序号
- 被动关闭连接请求端(服务器),接受FIN标志位,发送ACK标志位 携带确认序号
- 客户端 "半关闭" 完成 底层一来内核实现socket原理
- 被动关闭连接请求段(服务器),发送FIN标志位 携带序号
- 主动关闭连接请求端(客户端),接受FIN标志位,发送ACK标志位 携带确认序号
- 最后一个ack被被动关闭连接请求段接收到,标志着4次挥手完成,关闭连接
- TCP在连接时,会进行3次握手
-
TCP可以保证不丢包,数据顺序,所以是相对可靠的网络协议,而UDP会丢包,不能保证顺序,所以不可靠
-
TCP面向字节流,实际上是TCP把数据看成一连串无结构的字节流;UDP是面向报文的,而且UDP没有拥塞控制,因此网络出现拥塞不会使源主机的发送速率降低
-
TCP需要的资源比较多,相对而言,UDP就要的比较少
-
TCP建立对多连接需要开并发,这是因为TCP是点对点连接协议,而UDP可以做到一对一,一对多交互
-
由于TCP数据稳定,可靠,所以自然为了维护稳定的数据,传输速度没有UDP快
最后简答的用表格总结下
-
-
TCP UDP 优点 稳定(顺序、速度)、可靠 传输效率高、系统资源占用少、实现简单 缺点 传输效率低、系统资源占用多、程序实现复杂 不稳定(顺序、顺序)、不可靠 使用场景 对数据的准确性、稳定性较高的场合。上传、下载,普通请求数据等 对数据实时性较高的场合,可适当允许丢包、游戏、在线视频,电话会议
网友评论