传输层协议:TCP和UDP
分类:
文章
•
2024-06-02 23:23:16
TCP和UDP的区别
- TCP面向连接,UDP面向无连接。建立连接是指
为了在客户端和服务端维护连接,而建立的一定数据结构来维护双方交互的状态,用这样的数据结构来保证所谓的面向连接的特性
。(TCP首部就是这个数据结构,来保证所谓的面向连接
)
UDP
UDP特点
- UDP继承了IP的特性。
- UDP不能保证是否丢失,不能保证按顺序到达。
- UDP是基于数据报的,一个一个地发,一个一个的收。
- UDP没有拥塞控制,只要收到发的信号,就发,不管网络环境如何。
- UDP是无状态的,发了就不管了。
UDP包头

- 当发送的UDP包到达目标机器后,发现MAC地址匹配,于是就取下来,将剩下的包传给处理IP层的代码。
- 把IP头取下来,发现目标IP匹配,在IP头中的8位协议,表示数据包是个UDP包,即可按照UDP头进行解析。
- 处理完传输层的事情,内核的工作基本就干完了,下面要把数据交给某个应用处理,应用程序通过端口来区分。
UDP使用场景
- 需要资源少,网络比较好的内网,或者对于丢包不敏感的应用。
- 不需要一对一沟通,建立连接,而是可以广播的应用。
- 需要处理速度快,时延低,可以容忍少数丢包。但是要求即便网络拥塞,也不能退缩。
TCP
- 天然认为网络环境是恶劣的,丢包乱序重传拥塞时常有的,一言不合就可能送达不了,所以要从算法层面保证可靠性。
TCP包头

- 源端口号和目标端口号是不可少的,用来区分发给哪个应用
- 序号是给包编的号,是为了解决乱序问题。
- 确认序号是为了解决不丢包的问题,发出去的包要有确认,如果没收到确认,我就应该重发。
- 连接状态位:SYN是发起一个连接,ACK是回复,RST是重新连接,FIN是结束连接等。是用来维护连接状态,带状态位包的发送,会引起双方的状态变更。
- 窗口大小是用来做流量控制的,通信双方各声明一个窗口,标识自己的处理能力。让发送方别发太快,也别发太慢。
- 除了流量控制,还会做拥塞控制(为了别把网络环境搞堵车)。
TCP三次握手

- 三次握手除了双方建立连接外,主要还是为了沟通一件事情,就是 TCP 包的序号的问题。
- 序号不能从1开始,比如A发送1,2,3,B收到1,2。A掉线,发了1‘,2‘,此时B收到3,会认为3是下一个包,但其实A没想发送3。
TCP四次挥手
