1.传输层:提供数据的可靠或不可靠传输。(TCP,UDP)
2.TCP/IP分层:链路层->网络层(IP层)->传输层->应用层
3.UDP发送的数据报,每个数据报有“消息保护边界”,一次收发数据报不会跨越边界,如发送方发送大小为20,40,80三个包,发送方会依次发这三个包,大小不改变,接受方也是按发送的大小依次接收(哪怕三个报都同时到达了接受方),TCP是面向流的协议,它发送和接受的都是数据流,它可能先把三个包缓存起来,然后再分成很小的片发送,接收方接收就不会按发送的片接收,可能一把把所有的片一次性接收完。并且接收方在超过一个等待时间或者超过缓冲空间大小之前一直等待下去,不会来一个分片就接收一次。
4.TCP连接编程时,调用send后,数据不一定会马上发送出去,可能先缓冲起来再分片,所有一定要在一个循环里send,判断要发送的字节是否都发送完。 UDP调用一个Send后至少有一个数据报发送出去。 所以发送小包时,UDP可能比TCP慢,发大包时(比如大于10K)时UDP快
5.MTU:最大传输单元,IP层会对超过MTU的数据分片和重组,TCP也会根据MTU制定一个算法对数据分片,所以TCP数据一般不会在IP层分片了,UDP则会需要IP 层分片,但是IP层分片和重组都是IP层做的事情,对上层是透明的。
6.NAT:网络地址转换,a是私网IP,b是公网IP,a的包先发到网关,网关把源IP改成自己的IP,源MAC改成自己的MAC,源端口号改成一个与源MAC有关的算法算成的端口,这样回来的包就先发给网关,网关根据端口号可以算出源MAC。
7.WINSOCK处于回话层和传输层之间。