AI智能
改变未来

TCP & UDP

1.TCP和UDP的区别:
1)TCP是面向连接的,UDP是无连接的,即发送数据之前不需要建立连接
2)TCP提供可靠的服务,通过TCP连接传送的数据,无差错、不丢失、不重复且按序到达。UDP尽最大努力交付,即不保证可靠交付
3)TCP传输效率相对较低,UDP传输效率高,适用于对高速传输和实时性有较高的通信或广播通信
4)TCP连接只能是点对点、一对一的。UDP支持一对一、一对多、多对一、多对多的交互通信。
2.TCP的可靠 & 提高性能 机制:
1)确认应答机制:TCP将每个字节的数据都进行了编号,即为序列号,每一个ACK都带有对应的确认序列号,会告诉发送者,我已经收到了哪些数据,下一次从哪里开始发。
2)超时重传机制:分两种情况:(1)主机B在规定的时间内没有及时收到主机A发送的报文。(2)主机A未收到B发来的确认应答,会触发超时重传,即再次发送相同的包。
在Linux中,超时以500ms为一个单位进行控制,每次判定超时重发的超时时间都是500ms的整数倍,以指数形式递增,累计到一定的重传次数,TCP认为网络或者对端主机出现异常,强制关闭连接。
3)滑动窗口:因为一发一收的方式性能较低,那么一次发送多条数据,就可以提高性能。
窗口大小指的是无需等待确认应答而可以继续发送数据的最大值。例如窗口大小是4000个字节,则发送前四个段的时候,不需要等待任何ACK,直接发送。收到第一个ACK后,滑动窗口向后移动,继续发送第五个段的数据,以此类推(窗口越大,网络的吞吐率越高)。
4)流量控制:发送端可以根据接收端的处理能力,来决定发送端的发送速度。
5)拥塞控制:慢启动机制,先发少量的数据,探探路,摸清当前的网络拥堵状态,再决定按照多大的速度传输数据。拥塞窗口的增长速度是指数级别增长的,当到达阈值后,就会按照线性方式增长。
当TCP开始启动的时候,慢启动阈值等于窗口最大值。
在每次超时重发的时候,慢启动阈值会变成原来的一半,同时拥塞窗口置1.
6)延迟应答:如果接收数据的主机立刻返回ACK应答,这时候返回的窗口可能比较小。因此,可以等待接收端将接收到的数据处理之后再进行应答。这样网络吞吐量就越大,传输效率也越高。
延迟应答也有数量限制,一般每隔2个包就应答一次。
时间限制,一般超过200ms就应答一次。
7)捎带应答
3.TIME_WAIT为什么是2MSL?
MSL是TCP报文的最大生存时间,因此TIME_WAIT持续存在2MSL的话,就能保证在两个传输方向上的尚未被接收或迟到的报文段都消失,同时也在理论上保证最后一个报文可靠到达。
4.CLOSE_WAIT:一般而言,对于服务器上出现大量的CLOSE_WAIT状态,原因就是服务器没有正确的关闭,导致四次挥手没有正确完成。
5.解决IP地址不够用的三种方法:
1)动态分配IP地址:只给接入网络的设备分配IP地址
2)NAT技术:能够将私有IP通信时转换成全局IP
3)IPV6:IPV6与IPV4是两个互不相干的协议,彼此不兼容。IPV6用16字节128位来表示一个IP地址。
6.ARP协议:建立了主机IP地址和MAC地址的映射关系。
工作流程:1)原主机发出ARP请求,询问“IP地址是…的主机的硬件地址是多少“,并将这个请求广播到本地网段。2)目的主机接收到广播的ARP请求,发现其中的IP地址与本机相符,则发送一个ARP应答数据包给原主机,将自己的硬件地址填写到应答包中。3)每台主机都维护一个ARP缓存表,可以用arp -a命令查看。缓存表中的表项有过期时间(一般为20分钟),如果20分钟内没有再次使用某个表项,则该表项失效。下次还要发ARP请求来获得目的主机的硬件地址。

赞(0) 打赏
未经允许不得转载:爱站程序员基地 » TCP & UDP