TCP\IP从实际应用的五层结构开始,自顶而下的去分析每一层。
TCP/IP五层架构概述
学术上面是TCP/IP四层架构,OSI/ISO是七层架构,实际中使用的是TCP/IP五层架构。


数据链路层

ICMP数据包分析
Wireshark抓包分析ICMP协议_wireshark抓ping包分析数据报格式-CSDN博客
ping百度的ip地址。

请求报文


DDOS攻击
DDoS(分布式拒绝服务)攻击是一种恶意网络攻击,**旨在通过向目标服务器、服务或网络发起大量的流量请求,导致其无法正常工作**,从而使其无法为合法用户提供服务。与传统的DoS(拒绝服务)攻击不同,DDoS攻击是由多个受控设备(通常是被恶意软件感染的设备,形成一个"僵尸网络")同时发起攻击,从而分散了攻击来源,使其更难被防范和追踪。
Ping Flood 攻击 :这是最简单的 DDoS 攻击之一。攻击者使用大量设备向目标服务器发送大量 ICMP 回显请求(类似于 ping
命令),目的是占用目标的网络带宽和 CPU 资源。
网络层
IP协议

IP习题

首部长度为20字节
前八位中后四位0100,表示4是ip首部的长度,这个最小值为5.所以需要丢弃这个分组。

4个二进制表示一个十六进制。生存时间必须是32+32个位也就是16个十六个十六进制。 生存时间8位两个十六进制。01表示这个分组的跳数是1。下一个两个十六进制就是协议类型。02表示的是IGMP协议。

片位移式100 *8=字节,前面长度位799。下一个从800开始。 首部20,总长度100. 这个分片有80字节。
第一个字节编号 800 最后一个879

wireshark抓取ip数据包进行分析。


java
4 表示ipv4
5 首部长度位5*4=20字节
00 是区分服务
0030 总长度 长度48
7a4f 表示标识字段
4000 标志和片位移 0100 0000 1标识不分片
7c 生存时间 124
06 上层TCP协议
635d 首部校验和
3b517295 源地址 59.81.114.149
3b 51 37 e4 目的地址 59.81.55.228
分析ip数据包,应该是必考的.

Wireshark分析IP数据报_用wireshark分析ip报文结构-CSDN博客
前面的MAC地址,MAC地址长度是48位。四位是一个十六禁止,所以六位是一个MAC地址。
第一个4 标识ipv4的协议。
6是首部的长度,首部长度位30字节。
00 标识区分服务。
校验和确认
IP地址

OSPF和RIP协议

求当前最短路径的算法。
ARP报文分析

https://blog.csdn.net/weixin_46027505/article/details/106440848
ARP(Address Resolution Protocal,地址解析协议)是将IP地址解析为以太网的MAC地址(或者称为物理地址)的协议。在局域网中,当主机或其他网络设备有数据要发送给另一个主机或设备时,它必须知道对方的网络层地址(即IP地址)。但是仅仅有IP地址还是不够的,因为IP数据报文必须封装成帧才能通过物理网络发送,因为发送站还必须有接收站的物理地址,所以需要一个从IP地址到物理地址的映射。ARP就是实现这个功能的协议。
arp的理解(考研考过)
java
arp 请求的时候是广播报文,响应式单播报文。
查看本地arp 缓存
java
arp -a

java
arp -d * 删除本地的缓存表 需要管理员的权限

ARP请求

arp响应报文

java
HardWare type 1表示当前的硬件类型式以太网
protoco type 表示上层协议类型 ipv4
hardware size MAC地址长度
Protocol size ip协议地址长度
opcode reply 操作类型 1 表示arp请求报文 2表示 arp应答报文
源MAC和源IP
目的MAC和目的IP地址
传输层
TCP协议
报文格式

三次握手

javascript
第一次握手 SYN=1 请求建立连接 seq=x 表示当前的序号是x
第二次握手 SYN=1 ACK=1 ack=x+1 表示收到了前x个,下一个从x+1开始,seq表示当前是从y
第三次握手 ACK=1表示有效 ack=y+1 seq=x+1
是否可以进行两次握手。

防止已经失效的连接请求,一个报文在网络中逗留了很长的时候,在到达服务器端,这个时候服务器端打开状态,而客户端已经关闭了状态,浪费了资源。

选择C ACK=上一次的seq+1.
四次挥手

javascript
第一次挥手 FIN=1 ACK=1 seq=u ack=v请求关闭连接
第二次挥手 服务器发送 ACK 包 ACK=1 seq=v ack=u+1
第三次挥手 服务器发送FIN=1 请求关闭连接
第四次挥手 发送ACK报文
四次挥手详细过程如下:
- 客户端发送关闭连接的报文段,FIN 标志位1,请求关闭连接,并停止发送数据。序号字段 seq = x (等于之前发送的所有数据的最后一个字节的序号加一),然后客户端会进入 FIN-WAIT-1 状态,等待来自服务器的确认报文。
- 服务器收到 FIN 报文后,发回确认报文,ACK = 1, ack = x + 1,并带上自己的序号 seq = y,然后服务器就进入 CLOSE-WAIT 状态。服务器还会通知上层的应用程序对方已经释放连接,此时 TCP 处于半关闭状态,也就是说客户端已经没有数据要发送了,但是服务器还可以发送数据,客户端也还能够接收。
- 客户端收到服务器的 ACK 报文段后随即进入 FIN-WAIT-2 状态,此时还能收到来自服务器的数据,直到收到 FIN 报文段。
- 服务器发送完所有数据后,会向客户端发送 FIN 报文段,各字段值如图所示,随后服务器进入 LAST-ACK 状态,等待来自客户端的确认报文段。
- 客户端收到来自服务器的 FIN 报文段后,向服务器发送 ACK 报文,随后进入 TIME-WAIT 状态,等待 2MSL(2 * Maximum Segment Lifetime,两倍的报文段最大存活时间) ,这是任何报文段在被丢弃前能在网络中存在的最长时间,常用值有30秒、1分钟和2分钟。如无特殊情况,客户端会进入 CLOSED 状态。
- 服务器在接收到客户端的 ACK 报文后会随即进入 CLOSED 状态,由于没有等待时间,一般而言,服务器比客户端更早进入 CLOSED 状态。
两倍的MSI时间,保证TCP服务器端能收到第四次挥手的内容,如果第四次发送的内容咋在网络中丢失了,那么服务器端一直会发送重新响应报文。
javascript
16进制一个数字用四个二进制来表示。
0532源端口 0017目的端口 都是16位。
00000001 是序号 seq
00000000 确认号 ack
5 首部长度 5*4等于20字节
报文类型 0000 0000 0010 SYN等于1。
07FF 窗口的大小
0000 校验和
0000紧急指针
wireshark分析TCP\IP三次握手和四次挥手的过程。
大脑里面需要有那一张的图
javascript
先 ping www.baidu.com
然后再 curl www.baidu.com
解释curl命令
https://blog.csdn.net/ngczx/article/details/143669372?spm=1001.2014.3001.5501

第一次握手
seq和ack都是0.

第二次握手
seq=0,ack=上一次的+1=1

第三次握手
seq等于1,客户端第二次和服务器进行交互了。 ACK等客户端序号+1=1

第一次挥手
seq=79 ack=2782 FIN=1 请求关闭连接。


第三次挥手

第四次挥手

https://blog.csdn.net/dfBeautifulLive/article/details/121889271
TCP的高级特性包括**重传机制、滑动窗口、流量控制、拥塞控制。**
重传机制


往返时间RTT测量是比较复杂度的。
计算RTO的值。

滑动窗口
滑动窗口是一种流量控制机制,用于管理发送方和接收方之间的数据传输。**它通过定义一个窗口大小,限制在任何时间点内发送方可以发送但未被确认的数据量,从而防止接收方被过多的数据淹没。 **



流量控制
窗口的大小 **rwnd**。


拥塞控制

完整的拥塞控制过程

考研题目

UDP协议



TCP和UDP协议的区别
特性 | TCP | UDP |
---|---|---|
全称 | 传输控制协议 | 用户数据包协议 |
面向连接 | 无连接 | |
传输具有可靠性 | 不可靠 | |
速度较慢,需要建立连接 | 速度较快 | |
使用场景 | 文件传输、网页浏览器 | 实时视频会议、DNS查询 |
wireshark抓取UDP报文分析

应用层的协议
Http协议

报文类型
请求报文

java
请求方法 URL HTTP版本
请求头
请求体(post请求才有请求体)
响应报文

java
HTTP的版本 状态码 状态信息
HTTP/1.1 200 OK
响应头
key:value
响应体
wireshark分析HTTP报文
[wireshark抓包分析HTTP协议,HTTP协议执行流程,_浏览网页wireshark进行报文捕获-CSDN博客](https://blog.csdn.net/wangyuxiang946/article/details/132634902)
报文符合三次握手和四次挥手的过程。
DNS协议
**域名: **** www.baidu.com。**
就像 IP 地址必须转换成 MAC 地址才能访问主机一样,域名也必须要转换成 IP 地址,这个过程就是"域名解析"。

采用任播的技术,每次请求的时候都是找到最近的根域名服务器。

查询一般使用递归或者迭代查询
DNS本身是传输使用的是UDP,如果是DNS服务器之间传输数据可能会用TCP,所以DNS不一定是UDP。
NAT协议
```javascript 私有的IP地址。 10.0.0.0 --------- 10.255.255.255
172.16.0.0--------- 172.16.255.255
192.168.0.0---------192.168.255.255
为了解决ip地址非常稀少的问题,提出了NAT协议,将私网的ip地址映射到公网上面去。实现了一个公司使用一个公网的ip地址。
NAPT 加上了ip地址和端口号

NAT对于外网屏蔽了内网主机地址,能够为内网主机提供一定的安全保护。
<h3 id="OMfj9">DHCP协议</h3>
需要掌握
**DHCP 客户使用的端口是68,DHCP服务器使用的端口是67。**
DHCP在没有获取到ip地址的时候默认是**0.0.0.0**。只有通过四次交互之后才会真正分配ip地址。
