ARP协议
ARP(Address Resolution Protocol)协议 地址解析协议
把网络层的IP地址翻译成在数据链路层寻址的48位硬件地址(MAC地址)
在OSI模型中ARP协议属于链路层;而在TCP/IP模型中,ARP协议属于网络层。
IP协议
IP数据包首部的固定部分中的字段含义
(1)版本。占4位,值IP协议的版本。通信双方使用的IP协议版本必须一致。目前版本号是4(IPv4)
(2)首部长度。占4位,单位是4字节,首部长度默认是20字节,所以填充的数字为0101
(3)区分服务。占8位,用来获得更好的服务,但实际上基本没使用过
(4)总长度。占16位,指首部和数据之和的长度,单位位字节。长度为16,数据包最大长度为(2的16次方-1),但是受数据链路层协议的影响总长度不能超过最大传送单位MTU为1500字节
(5)标识。占16位,当IP数据包长度超过MTU时候,进行分片,在每一个分片数据包使用相同的标识,用来接收方进行数据包重组
(6)标志。占3位,只有前两位有意义
最低位置MF(More Fragment),当MF=1时表示后面还有分片
中间位置DF(Don‘t Fragment),意思是不能分片,当DF=0时才允许分片
(8)生存时间。占8位,英文缩写TTL(Time To Live),表示数据包在网络中的寿命。目的是防止数据包无法到达目的地无限制的在互联网兜圈子,大量消耗网络资源。设置一定的初始值,每经过一个路由器减一,TTL=0时,路由器丢弃数据包
(9)协议。占8位,指出数据包使用的是哪种协议
(10)首部校验和。占16位,数据包每经过一个路由器,都要重新计算一下首部校验和,经过一系列运算,判断数据包的首部是否发生变化,如果发生变化就路由器丢弃数据包。
(11)源IP地址。占32位
(12)目的IP地址,占32位
ICMP协议
ICMP(Internet Control Message Protocol)网际报文控制协议
用于在IP主机、路由器之间传递控制消息。控制消息是指网络通不通、主机是否可达、路由是否可用等网络本身的消息。大部分网络检修技巧和工具都是基于ICMP的(也就是ping)
简单点说,ICMP常用于寻找网络故障
运输层的两个主要协议:
(1)传输控制协议TCP(Transmission Control Protocol)
(2)用户数据包协议UDP(User Datagram Protocol)
区别:
(1)TCP提供面向连接的服务。文件分段,在传送数据前必须先建立会话,进行流量控制,保证可靠传输
(2)UDP传输之间不需要建立连接,不提供可靠交付,简单点说就是发送出去就不管了。适合一个数据包就能完成通信,或者对丢包了没必要重传的应用。
传输控制协议TCP(Transmission Control Protocol)
是为了在不可靠的互联网络上提供可靠的端到端字节流而专门设计的一个传输协议
数据包结构:
(1)源端口和目的端口。各占2字节
(2)序号。占4字节,序号范围是(0,2的32次方-1),序号到达最大之后又回到0。在一个TCP连接中传送的字节流中每一个字节都按顺序编号。起始序号必须在连接时候设置。首部中的序号字段指本报文段所发送数据的第一个字节序号。例如,一报文段的序号字段值是301,携带的数据共有100字节。表明第一个字节序号是301,最后一个字节序号是400,下一段报文从401开始
(3)确认号。占4字节,是期望收到对方下一个报文段的第一个数据字节的序号。
(4)数据偏移。占4位,单位时4字节,记录TCP报文第多少位开始是数据部分
(5)保留。占6位,目前没有使用
(6)紧急URG。当URG=1时,表明紧急指针有效。告诉系统此报文有紧急数据,应尽快传送,并把数据包插入到本报文段数据的最前面,比如ctrl+c
(7)确认ACK。TCP规定,在连接建立之后所有传送的报文段都必须把ACK设置位1
(8)推送PSH。尽快发送
(9)复位RST。当RST=1时,表明TCP连接出现了严重差错(由于主机崩溃或者其他原因),必须释放连接,重新建立一个连接
(10)同步SYN。用在TCP建立连接时使用。
(11)终止FIN。用来释放一个TCP连接。
(12)窗口。占2字节,窗口值是(0,2的16次方-1),表明对方现在允许发送的数据量,而且在动态变化。
(13)校验和。
(14)紧急指针。占2字节,仅在URG=1时有效,指出本报文段的紧急数据的字节数。
(15)选项。长度可变,最长为40字节
TCP的连接建立-三次握手
SYN/ACK 标识号 seq 序号 ack 确认号
TCP的连接释放-四次挥手
HTTP协议:(转载自公众号山丘安全攻防实验室 https://mp.weixin.qq.com/s/YhYIVuDDmAMgKSduin5OHQ)
HTTP协议简介
HTTP(超文本传输协议)是应用层上的一种客户端/服务端模型的通信协议,它由请求和响应构成,且是无状态的。(暂不介绍HTTP2)
- 协议
协议规定了通信双方必须遵循的数据传输格式,这样通信双方按照约定的格式才能准确的通信。
- 无状态
无状态是指两次连接通信之间是没有任何关系的,每次都是一个新的连接,服务端不会记录前后的请求信息。
- 客户端/服务端模型
五层网络模型
URL构成
用了这么久,你注意过吗?
协议内容
请求(Request)
客户端发送一个HTTP请求到服务端的格式:
- 请求行
- 请求头
- 请求体
响应(Response)
服务端响应客户端格式:
- 状态行
- 响应头
- 响应体
状态码
HTTP状态码由三个十进制数字组成,第一个十进制数字定义了状态码的类型,后两个数字没有分类的作用。HTTP状态码共分为5种类型:
更详细的状态码可查看 HTTP状态码
但一般我们只需要知道几个常见的就行,比如 200,400,401,403,404,500,502.
请求方法
截止到HTTP1.1共有下面几种方法:
请求和响应常见通用头
注意
Content-Type,内容类型,一般是指网页中存在的Content-Type,用于定义网络文件的类型和网页的编码,决定浏览器将以什么形式、什么编码读取这个文件。
常见的媒体格式类型如下:
以application开头的媒体格式类型:
常见请求头
常见响应头
总结
这一点在前后端联调接口最明显,当你在应用中去请求其他接口或转发请求时这些也是要知道的。不然出现问题的概率会大大提高。