传输层协议
1.1 TCP/UDP协议
TCP 传输控制协议
TCP 在传输真实数据前,先要进行链接测试(三次握手),如果测试通过才会发送真实数据。
UDP 用户数据包协议
UDP 直接上来传输数据,不管对面能不能收到
端口号的作用:区别应用程序(区别七层协议 http tcp udp 协议)
确认号的作用:告诉对方我收到了你的消息
控制位的作用:描述A、B两台设备的状态
SYN(同步位) ACK(确认位) FIN(断开位)
A ----->B
syn=1 请求建立连接
A< -----B
syn=1 ack=1 同意和你连接
fin=1 请求断开
fin=1 ack=1 同意和你断开
源端口、目标端口:一个计算机端口 某个时刻只能被一个进程占用,所以通过指定源端口和目标端口,就可以知道是哪两个进程需要通 信。源端口、目标端口是用16位表示的,可推算计算机的端口个数为2^16个,即 65536 (0-65535)
序列号:表示本报文段所发送数据的第一个字节的编号。序列号由32位表示,所以每2^32个字节,就会出现序列号回绕,再次从0 开始 无限循环
确认号:(ack)告诉对方我收到了你的消息
数据偏移/首部长度:表示TCP报文段的首部长度,共4位
控制位
URG(紧急位):表示本报文段中发送的数据是否包含紧急数据。后面的紧急指针字段(urgent pointer)只有当URG=1时才有效
ACK(确认位):表示是否前面确认号字段是否有效。只有当ACK=1时,前面的确认号字段才有 效。TCP规定,连接建立后,ACK必须为1,带ACK标志的TCP报文段称为确认报文段
PSH(急切位):提示接收端应用程序应该立即从TCP接收缓冲区中读走数据,为接收后续数据腾 出空间。如果为1,则表示对方应当立即把数据提交给上层应用,而不是缓存起来,如果应用程序 不将接收到的数据读走,就会一直停留在TCP接收缓冲区中
RST(重置位):如果收到一个RST=1的报文,说明与主机的连接出现了严重错误(如主机崩 溃),必须释放连接,然后再重新建立连接。或者说明上次发送给主机的数据有问题,主机拒绝响 应,带RST标志的TCP报文段称为复位报文段
SYN(同步位):在建立连接时使用,用来同步序号。
FIN(断开位):表示通知对方本端要关闭连接了,标记数据是否发送完毕。如果FIN=1,即告诉 对方:“我的数据已经发送完毕,你可以释放连接了”,带FIN标志的TCP报文段称为结束报文段
窗口大小:调节每次发送的数据包量
校验和:提供额外的可靠性紧急指针
标记紧急数据在数据字段中的位置
选项部分:其最大长度可根据TCP首部长度进行推算。TCP首部长度用4位表示,选项部分最长为: (2^4-1)*4-20=40字节
TCP 三次握手
pc1想和pc2建立连接
① pc1会发送一个请求连接报文。报文序号seq=x,同步位syn=1请求建立连接
②pc2收到报文后,回复一个报文。报文序号seq=y,希望下次发送一个确认号(Ack)x+1给我,同意你pc1连接 (控制位)SYN=1 ,ACK=1
③pc1收到pc2的同意连接报文,会回一个要求的seq=x+1,也希望下次发送一个确认号(Ack)y+1给我,确认位ACK=1告诉pc2收到了对方的同意连接
为什么是三次握手?
网络环境复杂为了确保数据能够到达,2次不够,4次多余,三次刚好
四次挥手
四次挥手: 半关闭状态 怕有数据没有传输完毕
服务器想和客服端断开连接
① 服务器会发送一个请求断开报文。报文序号seq=u,断开位fin=1请求断开连接
②客服端收到报文后,数据没有传输完毕回复一个报文。报文序号seq=v,希望下次发送一个确认号(Ack)u+1给我, 确认位ACK=1。缺少 断开位fin=1,进入半关闭状态 怕有数据没有传输完毕
③客服端收到报文后,数据传输完毕,回复一个报文。报文序号seq=v,希望下次发送一个确认号(Ack)u+1给我, 确认位ACK=1,同意马上断开,断开位fin=1
④服务器收到客户端的断开报文,会回一个要求的seq=u+1,也希望下次发送一个确认号(Ack)w+1给我,确认位ACK=1告诉服务器收到了对方的断开请求
有限状态机(扩展)
1. CLOSED 没有任何连接状态
2. LISTEN 侦听状态,等待来自远方TCP端口的连接请求 (服务开启 http(进程) 80端口在帮进 程 看着 有没有人找 http )
3. SYN-SENT 在发送连接请求后,等待对方确认
4. SYN-RECEIVED 在收到和发送一个连接请求后,等待对方确认
5. ESTABLISHED 代表传输连接建立,双方进入数据传送状态
6. FIN-WAIT-1 主动关闭,主机已发送关闭连接请求,等待对方确认
7. FIN-WAIT-2 主动关闭,主机已收到对方关闭传输连接确认,等待对方发送关闭传输连接请求
8. TIME-WAIT 完成双向传输连接关闭,等待所有分组消失
9. CLOSE-WAIT 被动关闭,收到对方发来的关闭连接请求,并已确认
10. LAST-ACK 被动关闭,等待最后一个关闭传输连接确认,并等待所有分组消失
11. CLOSING 双方同时尝试关闭传输连接,等待对方确认
wireshark
1. 选择捕获接口。一般都是选择连接到Internet网络的接口,这样才可以捕获到与网络相关的数据。 否则,捕获到的其它数据对自己也没有任何帮助。
2. 使用捕获过滤器。通过设置捕获过滤器,可以避免产生过大的捕获数据。这样用户在分析数据时, 也不会受其它数据干扰。而且,还可以为用户节约大量的时间。
3. 使用显示过滤器。通常使用捕获过滤器过滤后的数据,往往还是很复杂。为了使过滤的数据包再更 细致,此时使用显示过滤器进行过滤。
选择网卡 选择你需要抓取的网卡,波浪线的代表有数据流量。
模式选择
混杂模式与普通模式
1. 混杂模式:混杂模式就是接收所有经过网卡的数据包,包括不是发给本机的包,即不验证MAC地 址。
2. 普通模式:网卡只接收发给本机的包(包括广播包)传递给上层程序,其它的包一律丢弃。 一般来说,混杂模式不会影响网卡的正常工作,多在网络监听工具上使用。