C++必知必会复习(九)

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协议的面向连接的通信。





猜你喜欢

转载自blog.csdn.net/u014252478/article/details/80299087
今日推荐