对于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包
然后告诉,我靠,你丫神经病吧,哥的链路层真的搞不定!!