HTTP与TCP连接的那些事
这是我看到微信公众号看到的,然后通过wireshark分析,巩固知识。
准备工具
Wireshark
当接收到一个URL的时候,会执行的步骤
TCP是可靠的数据管道
TCP按照有序、无差错的承载HTTP数据。从TCP连接会以顺序、正确的传递。
TCP流是分段的、由IP分组传送
HTTP
网络接口(数据链路层)
IP(网络层)
TCP(传输层)
HTTP(应用层)
HTTPS
网络接口
IP
TCP
TSL 或 SSL
HTTP
HTTP要发送一条报文时候,会以流的形式将报文数据内容通过一条打开的TCP按照有序的方式进行传输。
TCP序号Seq
序号,占32位
标志位:共6个,即URG、ACK、PSH、RST、SYN、FIN
(A)URG:紧急指针(urgent pointer)有效。
(B)ACK:确认序号有效。
(C)PSH:接收方应该尽快将这个报文交给应用层。
(D)RST:重置连接。
(E)SYN:发起一个新连接。
(F)FIN:释放一个连接。
保持TCP连接的持续不间断地运行
TCP连接通过
源IP地址
源端口
目的地址
目的端口
seq=0
[SYN,ACK]
并声明发送讯号seq=0
确认讯号ack=1
[ACK]
报文,发送讯号seq=1
确认讯号ack=1
ack=FIN+SEQ
即145 = 1+ 144ack = FIN+SEQ
即 459=1+458向http://server.itaolaity.com:32773/add?a=1&b=8
发起请求,响应9
。
前面三个是TCP三次握手,第四条报文是客户端向服务器发送的HTTP请求包。以及服务器给客户端的响应。 最后四次挥手。
当点击当个报文详情的时候可以看到有5个描述信息。
Ethernet II, Src: ____, Dst: Tp-LinkT_6a:0a:1f (____)
可以看到源mac地址和目的mac地址
Internet Protocol Version 4, Src: 192.168.1.102(本机IP), Dst: 112.124.30.55(客户端IP)
IP层的分析
Transmission Control Protocol, Src Port: 14611, Dst Port: 32773(服务器端口), Seq: 1, Ack: 1, Len: 468
TCP分析
Hypertext Transfer Protocol
HTTP请求控制协议
可以看到请求行信息
、请求方法
、请求的URI
、请求的主机
、浏览器类型
、请求语言
、请求的编码格式
使用\r\n\r\n
结束
总结:
再看看服务器给出的响应报文
包括了响应行信息 HTTP/1.1 200 \r\n