写点什么

Wireshark 数据包分析学习笔记 Day23

发布于: 2021 年 03 月 26 日
Wireshark数据包分析学习笔记Day23

ICMP 用于告知网络包传送过程中产生的错误以及各种控制消息,ARP 用于根据 IP 地址查询相应的以太网 MAC 地址。

 

IP 下面的网卡驱动程序负责控制网卡硬件,而最下面的网卡则负责完成实际的收发操作,也就是对网线中的信号执行发送和接收的操作。

 

协议栈内部有一块用于存放控制信息的内存空间,这里记录了用于控制通信操作的控制信息,例如通信对象的 IP 地址、端口号、通信操作的进行状态等。需要根据这些信息判断下一步的行动,这就是套接字的作用

 

创建套接字时,首先分配一个套接字所需的内存空间,然后向其中写入初始状态。

 

把服务器的 IP 地址和端口号等信息告知协议栈,这是连接操作的目的之一。

客户端向服务器传达开始通信的请求,也是连接操作的目的之一。

 

“协议栈具体需要哪些信息”会根据协议栈本身的实现方式不同而不同

 

通信操作中使用的控制信息分为两类。

(1)头部中记录的信息

(2)套接字(协议栈中的内存空间)中记录的信息

 

连接操作的第一步是在 TCP 模块处创建表示连接控制信息的头部。通过 TCP 头部中的发送方和接收方端口号可以找到要连接的套接字。

 

一次将多少数据交给协议栈是由应用程序自行决定的,协议栈并不能控制这一行为

 

MTU:一个网络包的最大长度,以太网中一般为 1500 字节。

MSS:除去头部之后,一个网络包所能容纳的 TCP 数据的最大长度。

 

应用程序在发送数据时可以指定一些选项,比如如果指定“不等待填满缓冲区直接发送”,则协议栈就会按照要求直接发送数据。

 

网卡、集线器、路由器都没有错误补偿机制,一旦检测到错误就直接丢弃相应的包。应用程序也是一样,因为采用 TCP 传输,即便发生一些错误对方最终也能够收到正确的数据,所以应用程序只管自顾自地发送这些数据就好了。

 

TCP 会在发送数据的过程中持续测量 ACK 号的返回时间,如果 ACK 号返回变慢,则相应延长等待时间;相对地,如果 ACK 号马上就能返回,则相应缩短等待时间。

 

首先,协议栈会检查收到的数据块和 TCP 头部的内容,判断是否有数据丢失,如果没有问题则返回 ACK 号。然后,协议栈将数据块暂存到接收缓冲区中,并将数据块按顺序连接起来还原出原始的数据,最后将数据交给应用程序。具体来说,协议栈会将接收到的数据复制到应用程序指定的内存地址中,然后将控制流程交回应用程序。将数据交给应用程序之后,协议栈还需要找到合适的时机向发送方发送窗口更新

 

谁先断开连接的判断是应用程序作出的,协议栈在设计上允许任何一方先发起断开过程


发布于: 2021 年 03 月 26 日阅读数: 8
用户头像

还未添加个人签名 2018.11.30 加入

还未添加个人简介

评论

发布
暂无评论
Wireshark数据包分析学习笔记Day23