1、TCP/UDP的区别?
(1)TCP面向连接(如打电话要先接号建立连接),而UDP是无连接的,即发送数据之前不需要建立连接。
(2)TCP提供可靠的服务。也就是说,通过TCP连接传递的数据,无差错,不丢失,不重复,且按序到达。UDP尽最大努力交付,即不保证可靠交付。
(3)TCP面向字节流,实际上是TCP把数据看成一连串结构的字节流;UDP是面向报文的,UDP没有拥塞控制,因此网络出现拥塞不会使源主机的发送速率降低(对实时应很有用,如IP电话,实时视频会议等)。
(4)每一条TCP连接只能是点到点的;UDP支持一对一,一对多,多对多的交互通信。
(5)TCP首部开销20字节;UDP的首部开销小,只有8字节。
(6)TCP逻辑信道是全双工的可靠信道,UDP则是不靠信道。
——使用场合:很难给出一个明确界限区分两者的使用场景,基本上需要可靠性但自己又不想维护可靠性时,使用TCP;
隧道技术(移动网核心技术(Gn、Gb、lv)),对时延和抖动敏感的应用使用UDP。
TCP/UDP总结
TCP传输过程(二人传球)
A:我要传球了,你准备好了吗? A:传完了
B:准备好了 B:我也接收完了
C:开始传一号 A:88
D:收到 B:88
E:二号球
F:收到
UDP传输过程(闭着眼往一个框里扔球) 1号球,2号球,3号球
UDP 闭着眼往一个框里扔球 1号球,2号球,3号球
即使2号没进去,也不管了,继续扔 4号球
2、UDP数据包结构和分包
:格式由首部和数据两个部分。首部很简单,8个字节。
—源端口(source port):2字节,源端口
—目的端口(Destination port):2字节,目的端口
—长度(length):2字节,用于校验UDP数据报的数字段和包含UDP数据报首部的“伪首部”。其校验方法同IP分组首部中的首部校验和。
UDP用户数据报的格式和伪首部
3、以太网UDP最大报文段1472怎么计算得到?
以太网数据帧长度被限制在46-1500字节之间,这是由以太网的物理特性决定的。这个1500字节被称为链路层的MTU(最大传输单元)。但这不是指链路层的长度被限制在1500字节,其实这个MTU指的是链路层的数据区,并不包括链路层的首部和尾部18个字节。所以,1500字节就是网络层IP数据报的长度限制。
因为IP数据段的首部为20字节,所以IP数据区的长度最大为1480字节。而这1480字节用来存放TCP传来的TCP报文段或UDP数据段。又因为UDP数据报的首部8字节,所以UDP数据报的数据区最大长度为1472字节。
图解:
拓展:当发送UDP数据大于1472的时候会怎么样?
当IP数据报大于1500字节,大于MTU,这时候发送方IP层就需要分片,把数据报分成若干片,使每一片小于MTU(1500),接收方IP层需要数据重组。
4、TCP可靠的数据传输是怎么保证的?
(1)确认和重传:接收方收到报文就会确认,发送方发送一段时间后,没有收到确认就重传(三次握手,四次挥手)
(2)数据校验
(3)数据合理分片和排序
UDP:IP数据报文大于1500字节,大于MTU,这个时候发送方IP层就需要分片,把数据分片若干片,使每一片都小于MTU,而接收方IP层,则需要进行数据报的重组。这样就会多做许多事情,而严重的是,由于UDP的特性,当某一片数据,传递丢失时,接收方便无法重组数据报,将导致丢弃整个UDP数据报。
TCP:会按MTU合理分片,接收方会保存来按顺序到达数据,重新排序后再交给应用层。
(4)流量控制:当接收方来不及处理发送方的数据,能提示降低发送的速率,防止包丢弃。
(5)拥塞控制:当网络拥塞时,减少数据的发送。
5、TCP流量控制和拥塞控制?
流量控制:指点对点通信量的控制,是端到端的问题。流量控制所要做到的就是抑制发送端发送数据的速率。
拥塞控制:防止过多的数据注入到网络中,这样可以使网络中的路由器或链路不至于过载。(代价:产生额外开销,需要获得网络内部分布的信息)
6、TCP客户端和服务器端建立连接。
使用TCP套接字编程,实现TCP/IP协议的面向连接的通信。