DNS 查询报文和响应报文
- 当在浏览器中输入网站回车后,浏览器将向本机的DNS模块发送请求。
- DNS模块是有缓存的,若缓存中有,则直接取ip地址,若没有则向下将DNS发送给UDP
- UDP协议单元将该数据封装成IP数据包,传递给IP协议单元
- IP协议单元再进行一层封装,加入DNS服务器的地址
- 封装好的IP数据包将传递给链路层进行发送
- 数据链路层发送到DNS服务器,若数据链路层的缓冲区中没有dns服务器的MAC,那么就发送ARP的广播请求等待回应
- 得到回应之后将ip地址和对应的MAC地址写入APR缓存中,之后进行转发
- DNS请求被发送到DNS服务器的数据链路层的协议单元
- DNS服务器的数据链路层的协议单元会解析接收到的关键帧,并讲内部的IP数据包传送给网络层的IP协议单元
- DNS服务器的IP协议单元解析收到的数据包,然后再向上剥壳,讲UDP数据传递给UDP协议单元
- UDP将其内部的DNS报文传递给DNS服务单元,然后DNS服务单元解析域名对应IP地址,产生DNS回应报文,再发送给请求地址
TCP 第一次握手和第二次握手
相关资料
TCP(Transmission Control Protocol)传输控制协议
TCP是主机对主机层的传输控制协议,提供可靠的连接服务,采用三次握手确认建立一个连接:
位码即tcp标志位,有6种标示:SYN(synchronous建立联机) ACK(acknowledgement 确认) PSH(push传送) FIN(finish结束) RST(reset重置) URG(urgent紧急)Sequence number(顺序号码) Acknowledge number(确认号码)
第一次握手:主机A发送位码为syn=1,随机产生seq number=1234567的数据包到服务器,主机B由SYN=1知道,A要求建立联机;
第二次握手:主机B收到请求后要确认联机信息,向A发送ack number=(主机A的seq+1),syn=1,ack=1,随机产生seq=7654321的包;
第三次握手:主机A收到后检查ack number是否正确,即第一次发送的seq number+1,以及位码ack是否为1,若正确,主机A会再发送ack number=(主机B的seq+1),ack=1,主机B收到后确认seq值与ack=1则连接建立成功。
第一次握手
第二次握手
第三次握手
成功建立联系
HTTP 协议过程
在上面已经建立起来了TCP连接,主机向目标发送请求
以bupt.edu.cn为例子
第一个发送的是测试网络状态的请求,web服务器会返回一个版本号和协议状态码,http 200 表示请求成功
若请求头中Connection: keep-alive
则 TCP连接不会断开,否则一次http请求结束后TCP连接断开
DNS 发送报文解析
1 | Domain Name System (query) |
DNS响应报文解析
1 | Domain Name System (response) |
TCP报文解析
1 | Transmission Control Protocol, Src Port: 47594, Dst Port: 443, Seq: 0, Len: 0 |
HTTP 报文分析
HTTP请求报文:
1 | Hypertext Transfer Protocol |
HTTP响应报文
1 | Hypertext Transfer Protocol |