TCP/IP和UDP报文结构和报头包含的内容!

今天又给公司面试问的问题 不知道怎么回答
知道的给点答案! 不胜感激 高分回馈

UDP包

UDP报头由4个域组成,其中每个域各占用2个字节,具体如下:

源端口号

目标端口号

数据报长度

校验值

UDP协议使用端口号为不同的应用保留其各自的数据传输通道。UDP和TCP协议正是采用这一机制实现对同一时刻内多项应用同时发送和接收数据的支持。数据发送一方(可以是客户端或服务器端)将UDP数据报通过源端口发送出去,而数据接收一方则通过目标端口接收数据。有的网络应用只能使用预先为其预留或注册的静态端口;而另外一些网络应用则可以使用未被注册的动态端口。因为UDP报头使用两个字节存放端口号,所以端口号的有效范围是从0到65535。一般来说,大于49151的端口号都代表动态端口。
TCP包
每个tcp都包含源端口号和目标端口号,加上ip头中的源ip和目的ip,唯一确定一个tcp连接。序号用来标识从tcp发端向tcp收端发送的数据字节流,它表示在这个报文段中的第一个数据字节。序号字段包含由这个主机选择的该连接的初始序号isn(Initial Sequence Number)。该主机要发送数据的第一个字节,序号为isn+1,因为syn占用了一个序号。

IP包
IPV4报头有12个必需的字段和可选IP选项字段,位于要发送的数据之前。如果使用IP层已有的库或其他组件,一般不必考虑报头中的大多数字段,但程序代码需要提供源端和目的端地址。
1、版本(4比特)
IP协议版本已经经过多次修订,1981年的RFC0791描述了IPV4,RCF2460中介绍了IPV6。
2、报头长度(4比特)
报头长度是报头数据的长度,以4字节表示,也就是以32字节为单位。报头长度是可变的。必需的字段使用20字节(报头长度为5,IP选项字段最多有40个附加字节(报头长度为15)。
3、服务类型(8比特)
该字段给出发送进程建议路由器如何处理报片的方法。可选择最大可靠性、最小延迟、最大吞吐量和最小开销。路由器可以忽略这部分。
4、数据报长度(16比特)
该字段是报头长度和数据字节的总和,以字节为单位。最大长度为65535字节。
5、标识符(16比特)
原是数据的主机为数据报分配一个唯一的数据报标识符。在数据报传向目的地址时,如果路由器将数据报分为报片,那么每个报片都有相同的数据标识符。
6、标志(3比特)
标志字段中有2为与报片有关。
位0:未用。
位1:不是报片。如果这位是1,则路由器就不会把数据报分片。路由器会尽可能把数据报传给可一次接收整个数据报的网络;否则,路由器会放弃数据报,并返回 差错报文,表示目的地址不可达。IP标准要求主机可以接收576字节以内的数据报,因此,如果想把数据报传给未知的主机,并想确认数据报没有因为大小的原 因而被放弃,那么就使用少于或等于576字节的数据。
位2:更多的报片。如果该位为1,则数据报是一个报片,但不是该分片数据报的最后一个报片;如果该位为0,则数据报没有分片,或者是最后一个报片。
7、报片偏移(13比特)
该字段标识报片在分片数据报中的位置。其值以8字节为单位,最大为8191字节,对应65528字节的偏移。
例如,将要发送的1024字节分为576和424字节两个报片。首片的偏移是0,第二片的偏移是72(因为72×8=576)。
8、生存时间(8比特)
如果数据报在合理时间内没有到达目的地,则网络就会放弃它。生存时间字段确定放弃数据报的时间。
生存时间表示数据报剩余的时间,每个路由器都会将其值减一,或递减需要数理和传递数据报的时间。实际上,路由器处理和传递数据报的时间一般都小于1S,因此该值没有测量时间,而是测量路由器之间跳跃次数或网段的个数。发送数据报的计算机设置初始生存时间。
9、协议(8比特)
该字段指定数据报的数据部分所使用的协议,因此IP层知道将接收到的数据报传向何处。TCP协议为6,UDP协议为17。
10、报头检验和(16比特)
该字端使数据报的接收方只需要检验IP报头中的错误,而不校验数据区的内容或报文。校验和由报头中的数值计算而得,报头校验和假设为0,以太网帧和TCP报文段以及UDP数据报中的可选项都需要进行报文检错。
11、源IP地址(32比特)
表示数据报的发送方。
12、目的IP地址(32比特)
表示数据报的目的地。
温馨提示:答案为网友推荐,仅供参考
第1个回答  2015-12-18
TCP报文段首部(20个字节)
源端口和目标端口:各占2个字节,16比特的端标语加上32比特的IP地址,共同构成相当于传输层办事接见点的地址,即“插口”;
这些端口可用来将若干高层和谈向下复用;
序号字段和确认序号字段:
序号:占4个字节,是本报文段所发送的数据项目组第一个字节的序号。在TCP传送的数据流中,每一个字节都有一个序号。例如,一报文段的序号为300,而起数据供100字节,则下一个报文段的序号就是400;
确认序号:占4字节,是期望收到对方下次发送的数据的第一个字节的序号,也就是期望收到的下一个报文段的首部中的序号;
因为序号字段有32比特长,可以对4GB的数据进行编号,如许就可包管当序号反复应用时,旧序号的数据早已在收集中消散了;
数据偏移字段
数据偏移:占4比特,默示数据开端的处所离TCP报文段的肇端处有多远。这实际上就是TCP报文段首部的长度。因为首部长度不固定,是以数据偏移字段是须要的。
保存字段: 6比特,供往后应用,今朝置为0。
6个比特的把握字段
紧急比特URGent:当URG=1时,注解此报文应尽快传送,而不要按本来的列队次序来传送。与“紧急指针”字段共同应用,紧急指针指出在本报文段中的紧急数据的最后一个字节的序号,使接管方可以知道紧急数据共有多长;
确认比特ACK:只有当ACK=1时,确认序号字段才有意义;
急迫比特PSH:当PSH=1时,注解恳求远地TCP将本报文段立即传送给其应用层,而不要比及全部缓存都填满了之后再向上交付。
复位比特ReSeT:当RST=1时,注解呈现严重错误,必须开释连接,然后再重建传输连接。复位比特还用来拒绝一个不法的报文段或拒绝打开一个连接;
同步比特SYN:在建树连接时应用,当SYN=1而ACK=0时,注解这是一个连接恳求报文段。对方若赞成建树连接,在发还的报文段中使SYN=1和ACK=1。是以,SYN=1默示这是一个连接恳求或毗邻接管报文,而ACK的值用来区分是哪一种报文;
终止比特FINal:用来开释一个连接,当FIN=1时,注解欲发送的字节串已经发完,并请求开释传输连接;
窗口字段
窗口Window:占2字节,默示报文段发送方的接管窗口,单位为字节。此窗口告诉对方,“在未收到我的确认时,你可以或许发送的数据的字节数至多是此窗口的大小。”
通知窗口advertised window:接管端按照其接管才能承诺的窗口值,是来自接管端的流量把握。接管端将通知窗口的值放在TCP报文的首部中,传送给对方。
拥塞窗口congestion window:是发送端按照收集拥塞景象得出的窗口值,是来自发送端的流量把握。
查验和覆盖了全部的TCP报文段:TCP首部和TCP数据。这是一个强迫性的字段,由发端策画和存储,由收端进行验证。
选项字段容许每台主机设定可以或许接管的最大TCP载荷才能(缺省536字节) 。
TCP的数据编号与确认
数据流、报文段和序号
TCP通信的动作
切割:按照合适传输的大小对数据流进行切割
最大报文段长度<64Kbytes
凡是:MTU-(IP头+TCP头)
答复复兴:用报文段恢答复复兴始数据流的字节次序
序号:排序、查错及数据流答复复兴
报文序号
根据数据流中的字节序号(流序号)
报文序号为报文段中第一字节的流序号
如:流序号=x,长度=L的报文段,则:
报文的序号为x,下一报文序号为x+L
序号特点
报文的次序关系
数据流的地位,更便于流的答复复兴
需较大的序号空间(32bit,4Gbyte)
例如:在一个报文中,序号为300,而报文中数占领100字节。
下一个报文符,其序号为400;
UDP报文结构:
UDP报文比较简单,由四个字段组成,每个字段2个字节:
(1) 源端口 source port
(2) 目的端口 destination port
(3) 长度 :UDP用户数据报的长度
(4) 检验和 checksum
UDP与TCP比较:
相同点:§同一层的协议,基于IP报文基础上

不同点:
TCP是可靠的,高可用性的协议,但是复杂,需要大量资源的开销
UDP是不可靠,但是高效的传输协议