计算机网络之WireShark与TCP协议

首先介绍WireShark这是一个抓包工具,对于网络工程师这是必不可少的。下载地址为:传送门
现在大概介绍一下TCP/IP协议栈。在这里我不想说OSI七层模型,因为实际上七层模型就只是一个概念,一个粗略的说明,同时实际上我们也没有完全按照那个模型来。
TCP/IP协议栈实际上包含了很多的网络协议,这其中又以TCP/IP最为知名。其中IP属于网络层协议,TCP属于传输层协议。虽然传输层协议不只TCP和UDP(例如SCTP等),但实际工程中绝大多数都是使用TCP或UDP
例如我们用的qq实际上就是基于UDP的。不过人家鹅场又做了一层封装,所以你的约炮神器在网速不好的时候会提示你——发送失败

TCP

TCP全称为:Transmission Control Protocol(传输控制协议),正如其名。TCP是一种面向连接,可靠的,基于字节流的传输层协议。看到了没,前面有三个定语修饰。
面向连接的:TCP在传输之前需要先建立一个连接。当然,并不是真的连接,只是在通信的双方维持一个通信的状态。
可靠的:TCP对数据的超时,丢包,重发都有很严格的检测机制。这一点不同于UDP(类似于邮包裹)
基于字节流的:TCP传输的最小字段是字节,同时TCP头部中有一个MSS(Maximum Segment Size)选项即最大分段大小来告知双方所能接受的最大数据量。

WireShark的使用

运行wireshark之后点击Capture->Interface 然后选择你正在使用的那块网卡,这时我们就可以查看我们那块网卡上跑的数据啦。
你的网卡上有很多数据,然而我们往往只需要一些特定的。所以毫无疑问,得学会用WireShark查找(实际上就是过滤)
过滤方式有以下几种(此处没有一一列出):
1:以IP地址为Label
2:以协议类型为Label(HTTP TCP DNS)
3:具体点的可以以HTPP的获取资源的方法(GET PUT)等
当然也支持复合过滤,通过使用and or逻辑运算符即可
要查看详细的规则,请进入传送门:Filters

TCP/IP的三次握手

三次握手
上面就是TCP的三次握手示意图
大概解释一下:
第一次握手:(一般是)客户端发送一个SYN给服务端 意思是:我打算与你通信
第二次握手:(一般是)服务器发送一个SYN和一个ACK( acknowledgement)给客户端 意思是:已经收到你的通信请求(ACK确认),同时我也愿意和你通信(SYN)
第三次握手:(一般是)客户端回一个ACK给服务器 意思是:我知道你也愿意和我通信了(咱总不能拿热脸贴别人的冷屁股是不是)
这也就是为什么说TCP可靠的原因

实战

打开WireShark,监听本地网卡。同时在浏览器中输入www.zhihu.com(没错,就是知乎)
在WireShark过滤器中输入http,筛出来http协议的包
然后找,找到那个GET / HTTP/1.1的 找到之后右键点击Fellow TCP Stream

上面就是三次握手
我这里就不贴出通讯双方的IP了,以免被Hacker攻击
可以看到:
首先是客户端41768端口向服务器80端口发送SYN 其中的Seq是一个随机的序号(用来标识包裹序号)这里是0
第二次是服务器回了SYN和ACK 服务器的Seq初始也是0 ACK是1,ACK是一的原因是服务器回的ACK=(客户端的)SYN+1
第三次是客户端回了服务器一个ACK 这个ACK的取值是ACK=(服务器的)SYN+1
大概就是这个样子
不过有几个小细节和疑问我要说一下
一个是端口号的问题,这个很好解释。其中用TCP/IP所实现的服务中0-1023为知名端口号。如HTTP请求一般使用80端口号,而客户端的端口号通常是操作系统随即分配的。
另一个知识HTTP是基于TCP连接的,但HTTP并不会你请求一次就进行一次TCP连接,因为TCP连接虽然可靠但是效率是很低的。所以不能这么频繁,因此呢HTTP采用一种特殊的方式,至于什么方式。我先不告诉你

我的疑问是,seq通常是随机的,不过为什么我试了好几个网站都是从0开始呢?

参考资料:
https://wiki.wireshark.org/CaptureFilters
http://www.cnblogs.com/tankxiao/archive/2012/10/10/2711777.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值