程序员杂文

很多从事5、6年Web工作者都不明白的东西。

2015-12-15  本文已影响783人  Nodelover

我是个很自私的人,我通常很讨厌写技术分享。
我更喜欢写一下与技术无关的东西,更喜欢不写,请尊重劳动成果。
因为我觉得这个世界并没有谁会在意。

Tip:图比文字重要

# 这是一篇关于TCP/HTTP详解的文章

这是我上网找个一个图,请先初略的浏览一下


TCP 三次握手,四次挥手

# 三次握手

# 四次挥手(通常2、3会在一起)

首先使用WireShark

抓到的包

选择好网卡之后,在过滤栏目输入你想要抓取的协议(TCP)

选择的一条记录

我们这里选取了这一条。

表面上我们可以看到这些信息

过滤的包

在过滤窗口输入ip.addr == 172.16.16.44 && tcp过滤掉不需要的,红线框住的就是一个三次握手。

第一次握手

这个主要是IP(缩写)里面封装的信息(红线框内),从172.16.16.44到202.181.159.92

TCP协议

Transmission Control Protocol缩写就是TCP,里面封装了TCP端口到端口的协议

SYN

可以看见flag里面的SYN位是为Set的

第二次握手

可以看到这是从服务器发回给本机172.16.16.44的一个(SYN+ACK)确认包。
并且ACK = 上一次SEQ + 1

第三次握手

本机在收到之后,再向服务器发送一个确认包,完成三次握手。
建立TCP链接完成之后,我们的HTTP协议就可以开始工作了,对服务器请求数据。

HTTP HTTP

可以看见里面有一个Hypertext Transfer Protocol,缩写就是HTTP,我们把他打开来看一看。

HTTP

我们再找一个HTTP响应的报文

HTTP响应 四次挥手

这里由于一次性抓到了,就直接说了

  1. HTTP发送了请求之后,服务器发送回来一个ACK确认,生成一个新的ACK确好,并且发送给客户端HTTP响应,完成后。

2.客户端给服务器端发送FIN确认,并且SEQ=上一次的ACK

3.服务器接收到客户端来的FIN,服务器也向客户端发送一个FIN,SEQ=上一ACK,ACK=上一次SEQ+1

4.最终客户端向服务器端发送一个ACK确认断开。

其实下面还有我用 PackTracer,物理流程的TCP/HTTP,更多。看各位的评论再上传了。光是排版这么点我就花了半个小时。

上一篇 下一篇

猜你喜欢

热点阅读