计算机网络抓包实战
介绍
计算机网络作为一门计算机专业课,平时都是各种抽象的协议和各种发送接收,很难具体的去感受其含义,因此也是借助wireshark对发送的包进行一个分析。
抓包分析
三次握手验证
在第一次访问到182.254.242.96这个ip时,首先是建立了TCP的三次握手。与书上写的一样:
- 客户端发起握手请求,初始化一个SYN报文,将seq初始化一个值然后发送包给服务端。
- 服务端收到SYN报文后,也会建立一个SYN-ACK报文,同时初始化一个seq,并将ack置为发送来的SYN报文的seq+1。
- 客户端收到服务端发送的报文,会回一个ACK报文,其中ack为SYN-ACK报文的seq+1。
注意:在抓包软件中,初始的seq显示为0,但书上说是随机初始化的一个值。后来经过查询资料,原来是抓包软件做了优化,显示的是相对的seq,而不是实际的。
HTTP请求交互
四次挥手
- 首先客户端发起关闭请求,发送一个FIN报文给服务端,请求断开TCP连接。然后客户端进入FIN_WAIT_1状态
- 服务端收到FIN报文后,先回一个ACK报文,然后进入CLOSE_WAIT状态,准备将没有发送的数据最后进行发送,发送完毕后会回一个FIN报文,然后进入LAST_ACK状态。
- 客户端收到ACK报文后进入FIN_WAIT_2状态,等待FIN报文的到来。收到后会回复一个ACK,然后进入TIME_WAIT状态,等待2MSL时间后完全关闭连接。
- 服务端收到ACK后就直接进入CLOSE状态,关闭了连接。
在抓包这里可以看到,第二和第三次握手是连着的,也就是说四次挥手一下成了三次挥手。这里其实是因为一个TCP的延迟等待机制,因为单个ACK如果不带其他数据进行发送,那么它将会造成一个浪费,比较TCP固定20字节的头部开销还是比较大,因此会希望尽量能带着数据一起发送,避免一个资源浪费。TCP的延迟等待机制就是为此而设计。在第二次挥手发送ACK时,如果有数据它会直接就发送走ACK,如果没有数据要发送,它会等一下,然后和FIN报文一起发送,降低了这样一个发送开销。但前提是开启了该机制。
PING命令抓包
ping命令底层实际是用的ICMP协议,在IP层。
ICMP 全称是 Internet Control Message Protocol,也就是互联网控制报文协议。
网络包在复杂的网络传输环境里,常常会遇到各种问题。
当遇到问题的时候,不能死个不明不白,没头没脑的作风不是计算机网络的风格。所以需要传出消息,报告遇到了什么问题,这样才可以调整传输策略,以此来控制整个局面。
ICMP
主要的功能包括:确认 IP 包是否成功送达目标地址、报告发送过程中 IP 包被废弃的原因和改善网络设置等。
在 IP
通信中如果某个 IP
包因为某种原因未能达到目标地址,那么这个具体的原因将由 ICMP 负责通知。
热门相关:神秘老公,晚上见! 虎狼之师 最牛兵王 萌妻太甜:总裁大人,别傲娇 神医嫁到