tcp/ip

对于tcp和udp

流量控制:

     ngle算法和滑动窗口协议。

拥塞控制:

     慢查询

ip层的功能

==============================================================

ip层这个东西其实蛮实在,他就把数据交付给链路层。他唯一做的事情,就是:选路由。交互到指定的路由器。

但是对于大多数链路层来讲,它都有一个最大传输单元(MTU),表示能够发送数据量的大小,它

是由硬件决定的。所以ip层会对数据分组进行分片,对端的ip层然后对这写数据报进行重组。组成一个报文交付给上层。

但是,一旦某个数据报丢失了,ip层是没有缓存机制的,丢失了,就需要对所有的分组进行重传。

tcp和udp的本质区别 || udp的一次发送的数据过大的,话就需要全部重传!

==============================================================

对于udp呢,由于他上层没有任何控制机制,他是直接从应用层直接交付给了ip层,如果一旦你发送的这个数据包过大

,他分组了,一旦某个分组丢了。需要你重新传所有你发送的数据(sendto一次的数据)。

对于tcp呢,三次握手的时候,他会协商一个mss,从而尽可能的保证tcp的每个报文在ip层不分组。

然后tcp有缓存机制,他会超时重传,然后把完整的数据包再次重组之后交付给内核的缓存。

而可怜的udp没有超时重传的机制,只能讲所有数据交付给ip层,然后ip层无情的对其进行了分片。

=============

这里有一个导致不能上网的奇怪问题。

比如我非要IP层不分片,然后传输出去,人家收到这个包之后,返回一个icmp包

然后告诉,我靠,你丫神经病吧,哥的链路层真的搞不定!!

原文地址:https://www.cnblogs.com/xloogson/p/2516801.html