`
helloyesyes
  • 浏览: 1323166 次
  • 性别: Icon_minigender_2
  • 来自: 武汉
文章分类
社区版块
存档分类
最新评论

TCP/IP有关的报文格式

阅读更多

7.1 网络传输分层
如果你考过计算机等级考试,那么你就应该已经知道了网络传输分层这个概念.在网络上,人们为了传输数据时的方便,把网络的传输分为7个层次.分别是:应用层,表示层,会话层,传输层,网络层,数据链路层和物理层.分好了层以后,传输数据时,上一层如果要数据的话,就可以直接向下一层要了,而不必要管数据传输的细节.下一层也只向它的上一层提供数据,而不要去管其它东西了.如果你不想考试,你没有必要去记这些东西的.只要知道是分层的,而且各层的作用不同.

7.2 IP协议
IP协议是在网络层的协议.它主要完成数据包的发送作用. 下面这个表是IP4的数据包格式

0 4 8 16 32
--------------------------------------------------
|版本 |首部长度|服务类型| 数据包总长 |
--------------------------------------------------
| 标识 |DF |MF| 碎片偏移 |
--------------------------------------------------
| 生存时间 | 协议 | 首部较验和 |
------------------------------------------------
| 源IP地址 |
------------------------------------------------
| 目的IP地址 |
-------------------------------------------------
| 选项 |
=================================================
| 数据 |
-------------------------------------------------

下面我们看一看IP的结构定义

struct ip
{
#if __BYTE_ORDER == __LITTLE_ENDIAN
unsigned int ip_hl:4; /* header length */
unsigned int ip_v:4; /* version */
#endif
#if __BYTE_ORDER == __BIG_ENDIAN
unsigned int ip_v:4; /* version */
unsigned int ip_hl:4; /* header length */
#endif
u_int8_t ip_tos; /* type of service */
u_short ip_len; /* total length */
u_short ip_id; /* identification */
u_short ip_off; /* fragment offset field */
#define IP_RF 0x8000 /* reserved fragment flag */
#define IP_DF 0x4000 /* dont fragment flag */
#define IP_MF 0x2000 /* more fragments flag */
#define IP_OFFMASK 0x1fff /* mask for fragmenting bits */
u_int8_t ip_ttl; /* time to live */
u_int8_t ip_p; /* protocol */
u_short ip_sum; /* checksum */
struct in_addr ip_src, ip_dst; /* source and dest address */
};

ip_vIP协议的版本号,这里是4,现在IPV6已经出来了

ip_hlIP包首部长度,这个值以4字节为单位.IP协议首部的固定长度为20个字节,如果IP包没有选项,那么这个值为5.

ip_tos服务类型,说明提供的优先权.

ip_len说明IP数据的长度.以字节为单位.

ip_id标识这个IP数据包.

ip_off碎片偏移,这和上面ID一起用来重组碎片的.

ip_ttl生存时间.没经过一个路由的时候减一,直到为0时被抛弃.

ip_p协议,表示创建这个IP数据包的高层协议.如TCP,UDP协议.

ip_sum首部校验和,提供对首部数据的校验.

ip_src,ip_dst发送者和接收者的IP地址

关于IP协议的详细情况,请参考 RFC791

7.3 ICMP协议
ICMP是消息控制协议,也处于网络层.在网络上传递IP数据包时,如果发生了错误,那么就会用ICMP协议来报告错误.

ICMP包的结构如下:

0 8 16 32
---------------------------------------------------------------------
| 类型 | 代码 | 校验和 |
--------------------------------------------------------------------
| 数据 | 数据 |
--------------------------------------------------------------------

ICMP在中的定义是
struct icmphdr
{
u_int8_t type; /* message type */
u_int8_t code; /* type sub-code */
u_int16_t checksum;
union
{
struct
{
u_int16_t id;
u_int16_t sequence;
} echo; /* echo datagram */
u_int32_t gateway; /* gateway address */
struct
{
u_int16_t __unused;
u_int16_t mtu;
} frag; /* path mtu discovery */
} un;
};

关于ICMP协议的详细情况可以查看 RFC792

7.4 UDP协议
UDP协议是建立在IP协议基础之上的,用在传输层的协议.UDP和IP协议一样是不可靠的数据报服务.UDP的头格式为:


0 16 32
---------------------------------------------------
| UDP源端口 | UDP目的端口 |
---------------------------------------------------
| UDP数据报长度 | UDP数据报校验 |
---------------------------------------------------

UDP结构在中的定义为:
struct udphdr {
u_int16_t source;
u_int16_t dest;
u_int16_t len;
u_int16_t check;
};

关于UDP协议的详细情况,请参考 RFC768
7.5 TCP
TCP协议也是建立在IP协议之上的,不过TCP协议是可靠的.按照顺序发送的.TCP的数据结构比前面的结构都要复杂.

0 4 8 10 16 24 32
-------------------------------------------------------------------
| 源端口 | 目的端口 |
-------------------------------------------------------------------
| 序列号 |
------------------------------------------------------------------
| 确认号 |
------------------------------------------------------------------
| | |U|A|P|S|F| |
|首部长度| 保留 |R|C|S|Y|I| 窗口 |
| | |G|K|H|N|N| |
-----------------------------------------------------------------
| 校验和 | 紧急指针 |
-----------------------------------------------------------------
| 选项 | 填充字节 |
-----------------------------------------------------------------

TCP的结构在中定义为:
struct tcphdr
{
u_int16_t source;
u_int16_t dest;
u_int32_t seq;
u_int32_t ack_seq;
#if __BYTE_ORDER == __LITTLE_ENDIAN
u_int16_t res1:4;
u_int16_t doff:4;
u_int16_t fin:1;
u_int16_t syn:1;
u_int16_t rst:1;
u_int16_t psh:1;
u_int16_t ack:1;
u_int16_t urg:1;
u_int16_t res2:2;
#elif __BYTE_ORDER == __BIG_ENDIAN
u_int16_t doff:4;
u_int16_t res1:4;
u_int16_t res2:2;
u_int16_t urg:1;
u_int16_t ack:1;
u_int16_t psh:1;
u_int16_t rst:1;
u_int16_t syn:1;
u_int16_t fin:1;
#endif
u_int16_t window;
u_int16_t check;
u_int16_t urg_prt;
};

source发送TCP数据的源端口
dest接受TCP数据的目的端口

seq标识该TCP所包含的数据字节的开始序列号

ack_seq确认序列号,表示接受方下一次接受的数据序列号.

doff数据首部长度.和IP协议一样,以4字节为单位.一般的时候为5

urg如果设置紧急数据指针,则该位为1

ack如果确认号正确,那么为1

psh如果设置为1,那么接收方收到数据后,立即交给上一层程序

rst为1的时候,表示请求重新连接

syn为1的时候,表示请求建立连接

fin为1的时候,表示亲戚关闭连接

window窗口,告诉接收者可以接收的大小

check对TCP数据进行较核

urg_ptr如果urg=1,那么指出紧急数据对于历史数据开始的序列号的偏移值

关于TCP协议的详细情况,请查看 RFC793

来源:http://www.linuxeden.com/edu/doctext.php?docid=2735

分享到:
评论

相关推荐

    Socket服务端客户端以tcp/ip协议发送接收报文

    本教程将详细讲解如何利用Java Socket实现基于TCP/IP的服务端和客户端之间的报文发送与接收。 TCP(传输控制协议)是一种面向连接、可靠的传输协议,它确保了数据包的有序和无损传输。IP(互联网协议)则是互联网上...

    TCP/IP报文格式大全

    TCP/IP报文格式大全

    tcp/IP调试工具

    2. 协议解析:工具能解析捕获到的数据包,将原始的二进制数据转化为可读的格式,便于分析TCP/IP协议的各个字段。 3. 实时监控:实时显示网络状态,包括连接状态、数据传输速率、重传次数等,有助于找出网络瓶颈。 ...

    TCP/IP协议族(第四版)习题答案

    这部分的习题可能涉及这些协议的工作原理、报文格式及实际应用。 "TCP/IP协议族第四版课后习题答案"中,可能会对上述每个层次的协议进行深入解析,包括它们的头部结构、错误检测与纠正机制、流量控制策略、拥塞控制...

    TCP/IP 学习心得

    下面将对TCP/IP的基本原理和相关知识点进行详细介绍。 首先,TCP/IP模型分为四个主要层次:应用层、传输层、网络层和数据链路层。每一层都有其特定的任务和协议,共同构成了网络通信的基础。 1. **应用层**:这是...

    TCP/IP协议分析

    TCP 报文段分析是对 TCP 报文段的首部格式进行分析,了解 TCP 报文段的结构和作用。 七、结论 通过对 TCP/IP 协议的分析和实验,我们了解了 TCP/IP 协议在文件传输中的应用,了解了 FTP 协议的命令和响应代码,...

    tcp/ip详解第一卷

    该书深入浅出地讲解了TCP/IP协议族,是网络工程师和相关技术人员必备的参考资料之一。TCP/IP协议族是现代互联网通信的基础,它包括了一系列用于网络数据传输的协议,这些协议共同协作,确保了数据可以跨越多个网络,...

    TCP/IP教程TCP/IP基础

    12.1.1 RIP报文格式 109 12.1.2 RIP路由表 111 12.2 操作机制 112 12.2.1 计算距离向量 113 12.2.2 更新路由表 116 12.2.3 寻址问题 118 12.3 拓扑变化 120 12.3.1 收敛 120 12.3.2 计值到无穷 122 12.4 RIP的限制 ...

    经典TCP/IP协议教材

    TCP/IP(Transmission Control Protocol/Internet Protocol)是互联网上最基础、最重要的通信协议,它定义了数据在网络中传输的标准格式和规则。TCP/IP协议族由四个主要层次组成:应用层、传输层、网络层和数据链路...

    TCP/IP协议分析与应用学习资料

    这份PPT可能涵盖了TCP/IP的详细结构、工作流程、报文格式、拥塞控制、网络故障排查等内容,对于网络管理员、软件开发者或对网络感兴趣的学员来说,是深入理解和掌握TCP/IP协议的重要资源。通过学习,你可以了解如何...

    TCP-IP协议报文格式大全(V1.0)

    TCP-IP协议报文格式大全(V1.0),学习CISCO、HUAWEI网络技术必备资料。

    TCP/IP 协议 PDF

    TCP/IP协议是互联网的核心协议,它定义了网络设备如何交换数据以及数据如何被格式化以在各种网络中传输。这个PDF文档集可能是对TCP/IP协议的详细解释,提供了非扫描版,意味着它易于阅读和搜索,非常适合学习和参考...

    对以太网全硬件TCP/IP协议栈的简单认识-w5500以太网协议基本认识.pdf

    ### 对以太网全硬件TCP/IP协议栈的简单认识 #### 一、OSI七层结构模型概述 在深入探讨以太网全硬件TCP/IP协议栈之前,我们首先需要了解网络通信的基础——OSI(Open System Interconnect)七层模型。这一模型由...

    《TCP/IP:协议分析与应用编程》课后题答案

    - **信宿网络层**:验证IP数据报的完整性,如果正确则移除IP首部并将TCP报文段传递给传输层;如果错误则丢弃数据包并要求重新发送。 - **信宿传输层**:移除TCP首部,重组分组顺序后将数据流传递给应用程序。 #### ...

    TCP/IP协议详细介绍

    在TCP/IP协议族中,除了众所周知的TCP和IP协议之外,还包括了ICMP(Internet控制报文协议)、UDP(用户数据报协议)、TELNET(远程终端协议)、FTP(文件传输协议)和HTTP(超文本传输协议)等,这些协议共同构成了...

    TCP/IP技术大全

    12.1.1 RIP报文格式 109 12.1.2 RIP路由表 111 12.2 操作机制 112 12.2.1 计算距离向量 113 12.2.2 更新路由表 116 12.2.3 寻址问题 118 12.3 拓扑变化 120 12.3.1 收敛 120 12.3.2 计值到无穷 122 12.4 RIP的限制 ...

    tcp-ip三卷合集

    书中阐述了HTTP的工作流程、报文格式以及交互过程,这些对于理解网页浏览以及其他Web服务的运行机制至关重要。NNTP和UNIX域协议也得到了适当的探讨,让读者全面地掌握了各类应用层协议。 整体而言,《TCP/IP 三卷...

    TCP/IP详解(卷一)

    与其他的TCP/IP书藉的最大不同在于,本书不仅仅讲述了RFCS的标准协议,而且结合大量实例讲述了TCP/IP协议包的定义原因及在各种不同的操作系统中(如Sunos4.1.3、Soloris2.2、AIX3.2.2)的应用与工作方式,这样可以以...

    TCP/IP详解 卷1 中文版 pdf格式

    《TCP/IP详解 卷1:协议》是网络通信领域...《TCP/IP详解 卷1:协议》不仅涵盖了以上基础概念,还深入探讨了TCP/IP协议的实现细节,包括报文结构、错误处理、选项和扩展等,是学习和理解TCP/IP协议体系结构的宝贵资源。

    TCP/IP详解,卷1:协议源码.rar 经典 权威

    5. **传输层与网络层**:除了TCP和IP,这一卷还可能涵盖了UDP(用户数据报协议)和ICMP(网际控制报文协议)等其他协议,以及网络层的路由选择算法。 6. **应用层协议**:虽然书名未提及,但作为全面的TCP/IP详解,...

Global site tag (gtag.js) - Google Analytics