TCP和IP是两个协议
TCP和UDP协议原理类似,都是往目的地发送数据包
但有一个区别是,UDP只管发,不管你收没收到,TCP会确认你收到了一个包后再发下一个
TCP与UDP的区别:
1.基于连接与无连接;
2.对系统资源的要求(TCP较多,UDP少);
3.UDP程序结构较简单;
4.流模式与数据报模式 ;
5.TCP保证数据正确性,UDP可能丢包,TCP保证数据顺序,UDP不保证。
TCP包
每tcp都包含源端口号目标端口号加ip源ip目ip唯确定tcp连接序号用标识tcp发端向tcp收端发送数据字节流表示报文段第数据字节序号字段包含由主机选择该连接初始序号isn(Initial
Sequence
Number)该主机要发送数据第字节序号isn+1syn占用序号
IP包
IPV4报12必需字段选IP选项字段位于要发送数据前使用IP层已库或其组件般必考虑报数字段程序代码需要提供源端目端址
1、版本(4比特)
IP协议版本已经经修订1981RFC0791描述IPV4RCF2460介绍IPV6
2、报度(4比特)
报度报数据度4字节表示32字节单位报度变必需字段使用20字节(报度5IP选项字段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字节576424字节两报片首片偏移0第二片偏移72(72×8=576)
8、存间(8比特)
数据报合理间内没达目则网络放弃存间字段确定放弃数据报间
存间表示数据报剩余间每路由器都其值减或递减需要数理传递数据报间实际路由器处理传递数据报间般都于1S该值没测量间测量路由器间跳跃数或网段数发送数据报计算机设置初始存间
9、协议(8比特)
该字段指定数据报数据部所使用协议IP层知道接收数据报传向何处TCP协议6UDP协议17
10、报检验(16比特)
该字端使数据报接收需要检验IP报错误校验数据区内容或报文校验由报数值计算报校验假设0太网帧TCP报文段及UDP数据报选项都需要进行报文检错
11、源IP址(32比特)
表示数据报发送
12、目IP址(32比特)
表示数据报目
UDP包
UDP报由4域组其每域各占用2字节具体:
源端口号
目标端口号
数据报度
校验值
UDP协议使用端口号同应用保留其各自数据传输通道UDPTCP协议采用机制实现同刻内项应用同发送接收数据支持数据发送(客户端或服务器端)UDP数据报通源端口发送数据接收则通目标端口接收数据网络应用能使用预先其预留或注册静态端口;另外些网络应用则使用未注册态端口UDP报使用两字节存放端口号所端口号效范围065535般说于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比特)
表示数据报的目的地。
UDP包
UDP报头由4个域组成,其中每个域各占用2个字节,具体如下:
源端口号
目标端口号
数据报长度
校验值
UDP协议使用端口号为不同的应用保留其各自的数据传输通道。UDP和TCP协议正是采用这一机制实现对同一时刻内多项应用同时发送和接收数据的支持。数据发送一方(可以是客户端或服务器端)将UDP数据报通过源端口发送出去,而数据接收一方则通过目标端口接收数据。有的网络应用只能使用预先为其预留或注册的静态端口;而另外一些网络应用则可以使用未被注册的动态端口。因为UDP报头使用两个字节存放端口号,所以端口号的有效范围是从0到65535。一般来说,大于49151的端口号都代表动态端口。