全部博文(842)
分类: 系统运维
2012-05-23 15:11:09
1,TCP协议和UDP协议的区别
1,TCP协议面向连接,UDP协议面向非连接
2,TCP协议传输速度慢,UDP协议传输速度快
3,TCP协议保证数据顺序,UDP协议不保证
4,TCP协议保证数据正确性,UDP协议可能丢包
5,TCP协议对系统资源要求多,UDP协议要求少
2,I P分片:
IP层接收到一份要发送的IP数据报时,它要判断向本地哪个接口发送数据(选路),并查询该接口获得其MTU。IP把MTU与数据报长度进行比较,如果需要则进行分片。分片可以发生在原始发送端主机上,也可以发生在中间路由器上。
把一份I P数据报分片以后,只有到达目的地才进行重新组装(这里的重新组装与其他网络协议不同,它们要求在下一站就进行进行重新组装,而不是在最终的目的地)。重 新组装由目的端的I P层来完成,其目的是使分片和重新组装过程对运输层( T C P和U D P)是透明的,除了某些可能的越级操作外。已经分片过的数据报有可能会再次进行分片(可能不止一次)。I P首部中包含的数据为分片和重新组装提供了足够的信息
3,数据包的封装
上三层: 数据
传输层: 数据 TCP/IP(HEAD) 段
网络层: 数据 TCP/IP(HEAD) IP(HEAD) 包
数据链路层: 数据 TCP/IP(HEAD) IP(HEAD) 帧
物理层: 111111111111000000000000000011 比特
4,TCP段格式
要想对TCP有着较为详细的了解的话,那TCP的包格式是一定要了解,有了结构的清楚认识才能真正的理解它的工作过程和各种机制的原理,以下就是TCP的结构图:
TCP数据包可分为TCP包头和来自应用层的数据两部分
中间的标志位就是用于协议的一些机制的实现的比特位大家可以看到有6比特,它们依次如下:
URG、ACK、PSH、RST、SYN、FIN。
URG表示紧急指针字段有效;
ACK置位表示确认号字段有效;
PSH表示当前报文需要请求推(push)操作;
RST置位表示复位TCP连接;
SYN用于建立TCP连接时同步序号;
FIN用于释放TCP连接时标识发送方比特流结束
源端口和目的端口:各为16比特,用于表示应用层的连接。源端口表示产生数据包的应用层进程,而目的端口则表示数据包所要到达的目的进程。
序列号:为32比特,表示数据流中的字节数。序列号为首字节在整个数据流中的位置。初始序列号随机产生,并在连接建立阶段予以同步。
确认号:表示序号为确认号减去1的数据包及其以前的所有数据包已经正确接收,也就是说他相当于下一个准备接收的字节的序号。
头部信息:4比特,用于指示数据起始位置。由于TCP包头中可选项的长度可变,因此整个包头的长度不固定。如果没有附加字段,则TCP数据包基本长度为20字节。
窗口:16位,表示源端主机在请求接收端等待确认之前需要接收的字节数。它用于流量控制,窗口大小根据网络拥塞情况和资源可用性进行增减。
校验位:16位。用于检查TCP数据包头和数据的一致性。
紧急指针:16位。当URG码有效时只向紧急数据字节。
可选项:存在时表示TCP包头后还有另外的4字节数据。TCP常用的选项为最大数据包(并非整个 TCP报文)MSS。每一个TCP段都包含一个固定的20字节的段头。TCP段头由20字节固定头和一些可选项组成。实际数据部分最多可以有 65495(65535-20-20=65495)字节。
5,UDP段格式
6,IP包格式
IPv4首部一般是20字节长。在以太网帧中,IPv4包首部紧跟着以太网帧首部,同时以太网帧首部中的协议类型值设置为080016。 IPv4提供不同,大部分是很少用的选项,使得IPv4包首部最长可扩展到60字节(总是4个字节4个字节的扩展)
0 | 4 | 8 | 12 | 16 | 19 | 24 | 31 |
版本 | 首部长度 | 服务类型 | 长度 | ||||
认证 | 标志 | 段偏移量 | |||||
TTL | 协议 | 校验和 | |||||
源IP地址 | |||||||
目的IP地址 | |||||||
选项 ... |
版本:4位,指定IP协议的版本号。
包头长度(IHL):4位,IP协议包头的长度,指明IPv4协议包头长度的字节数包含多少个32位。由于IPv4的包头可能包含可变数量的可选 项,所以这个字段可以用来确定IPv4数据报中数据部分的偏移位置。IPv4包头的最小长度是20个字节,因此IHL这个字段的最小值用十进制表示就是5 (5x4 = 20字节)。就是说,它表示的是包头的总字节数是4字节的倍数。
服务类型:定义IP协议包的处理方法,它包含如下子字段
过程字段:3位,设置了数据包的重要性,取值越大数据越重要,取值范围为:0(正常)~ 7(网络控制) 延迟字段:1位,取值:0(正常)、1(期特低的延迟) 流量字段:1位,取值:0(正常)、1(期特高的流量) 可靠性字段:1位,取值:0(正常)、1(期特高的可靠性) 成本字段:1位,取值:0(正常)、1(期特最小成本) 未使用:1位长度:IP包的总长
认证:
标志:是一个3位的控制字段,包含:
保留位:1位 不分段位:1位,取值:0(允许数据报分段)、1(数据报不能分段) 更多段位:1位,取值:0(数据包后面没有包,该包为最后的包)、1(数据包后面有更多的包)
段偏移量:当数据分组时,它和更多段位(MF, More fragments)进行连接,帮助目的主机将分段的包组合。
TTL:表示数据包在网络上生存多久,每通过一个路由器该值减一,为0时将被路由器丢弃。TTL<64 128< TTL<256表示LINUX操作系统,64 协议:8位,这个字段定义了IP数据报的数据部分使用的协议类型。常用的协议及其十进制数值包括ICMP(1)、TCP(6)、UDP(17)。 校验和:16位,是IPv4数据报包头的校验和。 源IP地址: 目的IP地址: 7,帧结构: 在TCP/IP的头域部分,就能知道发送的是一个数据报文,还是一个确认报文
DA | SA , TYPE ,LOAD , FCS
目标/源MAC , 帧类型 ,帧封装数据 , 帧校验序列
各6Bytes , 2Bytes ,46-1500Bytes , 4Bytes