协议格式
TCP/IP模型
-
应用层
- 是最高的一层,直接面向用户
-
作用:
- 用来处理传输层提交的信息,并与用户交互
- 把用户输入的信息再发送给传输层来处理
- 用来处理传输层提交的信息,并与用户交互
-
主要用到的协议:
- http协议
-
http请求报文格式
- http协议
- 是最高的一层,直接面向用户
请求方法 |
空格 |
URL |
空格 |
协议版本 |
回车符 |
换行符 |
请求行 |
头部字段名 |
: |
值 |
回车符 |
换行符 |
|
|
|
。。。 |
|
|
|
|
|
|
请求头部 |
头部字段名 |
: |
值 |
回车符 |
换行符 |
|
|
|
回车符 |
换行符 |
|
|
|
|
|
|
|
|
|
|
|
|
|
请求数据 |
-
请求行
- 由请求方法字段,url字段和协议版本字段组成,他们用空格分隔
- 例如:GET /index.html HTTP/1.1
-
请求头
- 请求头由关键字/值对组成。请求头部通知服务器有关客户端请求的信息
- 请求头由关键字/值对组成。请求头部通知服务器有关客户端请求的信息
Host |
接受请求的服务器地址,可以是ip:端口号,也可以是域名 |
User-Agent |
发送请求的应用程序名称 |
Connection |
指定与链接相关的属性,如connetion:keep-alive |
等 |
|
-
响应报文
协议方法 |
空格 |
状态码 |
空格 |
协议描述 |
回车符 |
换行符 |
状态行 |
头部字段名 |
: |
值 |
回车符 |
换行符 |
|
|
|
。。。 |
|
|
|
|
|
|
请求头部 |
头部字段名 |
: |
值 |
回车符 |
换行符 |
|
|
|
回车符 |
换行符 |
|
|
|
|
|
|
|
|
|
|
|
|
|
请求数据 |
-
传输层
- 主要作用是对数据包的分割,重组,排序 ,重传和连接,以确保数据通过网络层准确无误的到达了网络的另一方
-
常用的协议为TCP和UDP
- TCP格式
- TCP格式
- 主要作用是对数据包的分割,重组,排序 ,重传和连接,以确保数据通过网络层准确无误的到达了网络的另一方
偏移位 |
0-3 |
4-7 |
8-15 |
16-31 |
0 |
源端口 |
|
|
目的端口 |
32 |
序号 |
|
|
|
64 |
确认号 |
|
|
|
96 |
数据偏移 |
保留 |
标记 |
窗口大小 |
128 |
校验和 |
|
|
紧急指针 |
160 |
选项 |
|
|
|
源端口 |
发送方主机使用的端口 |
目的端口 |
数据包将要被发送到的端口 |
序号 |
这个数字用来标示一个tcp片段,保证没有确实数据包 |
确认号 |
这个数据是通信中希望从另一个设备得到的下一个数据包序号 |
数据偏移 |
也就是tcp头部大小 |
标记 |
所传输的tcp数据包的类型 |
窗口大小 |
tcp接受者缓冲区字节大小 |
校验和 |
用来保证tcp数据包的完整性 |
紧急指针 |
如果字段标志设置为URG,改字段告诉CPU从数据包哪里开始读数据 |
选项 |
各种可选的域 |
- UDP格式
偏移位 |
0-15 |
16-31 |
0 |
源端口 |
目的端口 |
32 |
数据包长度 |
校验和 |
源端口 |
发送方主机使用的端口 |
目的端口 |
数据包将要被发送到的端口 |
数据包长度 |
数据包的字节长度 |
标记 |
所传输的数据包的类型 |
校验和 |
用来保证UDP数据包的完整性 |
-
网络层
- 主要作用:实现与远程设备的连接
- 这一层常用的的协议为IP协议
-
目前有2个版本,IPV4和IPV6
- ipv4 协议中ip地址是一个32位的数值,采用点分四组表示法
-
每个ip地址包含两个部分
-
网络地址
- 用来标示所连接到的局域网
- 用来标示所连接到的局域网
-
主机地址
- 用来标示设备本身
- 用来标示设备本身
- 网络地址和主机地址的划分由子网掩码来决定
-
- ipv4 协议中ip地址是一个32位的数值,采用点分四组表示法
- IP协议
- 主要作用:实现与远程设备的连接
偏移位 |
0-3 |
4-7 |
8-15 |
16-18 |
19-31 |
0 |
版本 |
首部长度 |
服务类型 |
总长度 |
|
32 |
标识符 |
|
|
标记 |
分片偏移 |
64 |
存活时间 |
|
协议 |
首部校验和 |
|
96 |
源ip地址 |
|
|
|
|
128 |
目的ip地址 |
|
|
|
|
160 |
选项 |
|
|
|
|
160 or 192+ |
数据 |
|
|
|
|
版本 |
ip所使用的版本 |
首部长度 |
ip头的长度(4字节的整数倍 |
服务类型 |
路由器使用改字段做流量有限排序 |
总长度 |
ip+数据包长度 |
标示符 |
一个唯一标示,用来区分数据包或数据分片的顺序 |
标记 |
标示数据包是否分片数据 |
分片偏移 |
分片数据时改字段有效,用于将数据包按顺序组合 |
存活时间 |
定义数据包的生存周期,路由器中转一次减一 |
协议 |
用来识别数据包上层协议类型 |
首部校验和 |
错误检测机制,确认内容是否损坏或篡改 |
源ip地址 |
发送方主机的ip地址 |
目的ip地址 |
接收方主机的ip地址 |
选项 |
可选 |
数据 |
使用ip传递的实际数据 |
-
网络链路层
-
ARP协议:地址解析协议
- 主要作用:通过ip找主机设备(mac地址)
-
ARP查看指令
- ARP -a 显示所有接口当前的ARP缓存表
- -d 删除指定的ip地址项
- -s 添加静态的ip-mac映射记录
- ARP -a 显示所有接口当前的ARP缓存表
-
协议格式
- 主要作用:通过ip找主机设备(mac地址)
-
偏移位 |
0-7 |
8-15 |
0 |
硬件类型 |
|
16 |
协议类型 |
|
32 |
硬件地址长度 |
协议地址长度 |
48 |
操作 |
|
64-111 |
发送方硬件地址 |
|
112-143 |
发送方协议地址 |
|
144-191 |
目标硬件地址 |
|
192-215 |
目标协议地址 |
|
硬件类型 |
数据链路层使用的数据类型,大多数情况下,这个类型是以太网 |
协议类型 |
APR请求站在使用的高层协议 |
硬件地址长度 |
正在使用的物理地址长度 |
协议地址长度 |
正在使用的逻辑地址长度 |
操作: |
ARP数据包功能,1表示请求,2表示响应 |
发送方硬件地址 |
发送者的物理地址 |
发送方协议地址 |
发送者的协议地址 |
目标方硬件地址 |
接收者的物理地址(广播arp请求中接受者的物理地址常为0) |
目标方协议地址
|
接收者的协议地址 |
The post 网络编程之常用协议格式 appeared first on cole.
http://ift.tt/eA8V8J internet September 06, 2017 at 07:51PM
评论
发表评论