文章目录
1. 李导推荐书籍
- TCP/IP详解
2. OSI七层模型
- 下层为上层提供服务;
- 如数据链路层为网络设备建立点对点的物理链路,为网络层提供 无差错的帧传输,所以网络层才能顺利实现路由寻址并建立端到端的连接;
- 而再此基础上,传输层才可以通过端口为应用服务提供传输支持
2.1 传输层
- 传输层通过指定端口号管理或控制端到端的数据传输
- 传输层的两个数据传输协议:TCP、UDP
- TCP协议:面向可靠连接(建立连接需3次握手,断开连接需4次挥手)
- UDP协议:不可靠连接(直接建立、断开,尽力传输数据)
- 数据在传输层叫做数据报(udp)或段(tcp)
2.2 网络层
- 网络层通过IP寻址为网络设置建立端到端的连接
- 核心协议:IP协议
- ICMP(网络控制管理协议)也属于网路层
- 代表设备:路由器、三层交换机
- SRC:原地址;DST:目的地址
- 数据在网络层叫做数据包
2.2.1 问:两端处于不同局域网的设备怎么网络通信?
- 只有具有公网IP的设备才能网络通信
- 而大部分的网络设备处于局域网,明显依靠网关的NAT转换技术
- 所以这两个设备是使用公网IP进行通信的
- 但是通过这两个公网IP只能被定位到两个网关,而不是局域网的设备!
- 因此IP地址(网络层)无法直接实现本地网络(局域网)精准寻址
- 所以需要比IP地址更为准确的寻找网络设备的标志—MAC地址
2.3 数据链路层
- 网络层建立的连接是逻辑链路,而数据链路层是依靠MAC地址(网卡地址)和以太网协议为网络通信建立可靠的点对点物理链路,确保数据帧的精准投递
- 因此数据在局域网时是通过Mac地址进行通信的(IP地址为数据传输指明了方向,MAC地址为其明确了前进道路)
- Mac地址有48位
- 数据在该层叫做数据帧
- 代表设备:二层交换机
2.4 物理层
- 物理层将数据帧转换成二进制的数据:0101……
- 二进制依然是一堆数据,而物理链路(以太网、光纤)只能传输电信号或光信号;于是用不同的电平来表示1还是0(比如高电压是1,低电压是0),将数据转换成电信号的设备就是调制解调器
- 而将电信号与光信号相互转换的就是光猫
2.5 图解OSI七层模型
3. 数据传输模式
3.1 全双工
- 数据可同时双向传输
- 代表设备:电话、网络、TCP通信、交换机
3.2 半双工
- 数据可双向传输,但是同一时间只能向单向传输,需要双方设备交替进行
- 代表设备:hub(集线器)、对讲机
3.3 单工
- 数据只能单向传输,一方为发送端,一方为接收端
- 代表设备:广播、收音机、键盘
4. TCP 3次握手
- 知晓TCP实现了全双工数据通信,是理解TCP3次握手的基础
- TCP是传输层协议,因此3次握手是与端口建立连接
- SYN :Synchronize,同步
- ACK:Acknowledge,确认
- PSH:push,发送数据
- seq:sequence,序列号
4.1 抓包
5. TCP 4次挥手
- 四次挥手是为了断开连接
- 也是需要断开两次单向通信线路
- FIN:Finish,终止连接
5.1 问:在TCP协议中,三次握手时服务端将 ACK
和 SYN
合并为一个包发送,但四次挥手时 ACK
和 FIN
却需要分开发送,这是为啥?
- 三次握手:
握手时双方尚未开始传输数据,服务端收到SYN
后可以立即同意连接(ACK
)并同时发起自己的SYN
请求。此时没有数据需要处理,合并发送不会影响可靠性。 - 四次挥手:
挥手时双方可能仍有未传输完的数据。服务端收到FIN
后,需要先ACK
确认收到关闭请求(确保对方知道已收到),然后继续发送剩余数据,最后再发送自己的FIN
关闭连接。如果强行合并ACK
和FIN
,可能导致数据丢失。依然是为了通信的可靠性设计的。
5.2 抓包
- 第二个数据包(服务端→客户端)的ACK和FIN标志位同时置位,是TCP协议允许的优化行为
- 如果服务端在收到客户端的
FIN
后没有剩余数据需要发送,可以直接合并ACK
和FIN
,减少交互次数。 - 标准四次挥手:
ACK
和FIN
分开发送(共4个包)。 - 优化后的挥手:
ACK
和FIN
合并发送(共3个包)。
6. UDP抓包
- telnet仅能连接TCP端口
- udp端口需要nc命令连接
nc
是Netcat
的缩写,被称为 “网络瑞士军刀”,是一个功能强大的 命令行网络工具,用于 TCP/UDP 连接监听、端口扫描、文件传输、代理转发 等。
6.1 udp服务端
- -l:监听模式
- -u:使用UDP传输协议
- 创建一个udp端口
nc -lu 12306
6.2 udp客户端
- 连接该端口
nc -u 服务端ip 12306
6.3 wireshark过滤
- 过滤:
udp.port==12306
7. 面试题:TCP与UDP的区别?
TCP(传输控制协议) | UDP(数据报协议) |
---|---|
面向连接(3次握手、四次挥手) | 无连接 |
可靠传输 | 不可靠传输 |
流量监控(检查数据是否丢失,若丢失会重新发送) | 尽力发送 |
TCP应用:Web浏览器、电子邮件、文件传输服务 | UDP应用:DNS、视频(直播服务)、IP语音(VoIP) |
8. DNS 域名解析协议
- DNS作用:将域名解析成ip,供网络设备访问
- 公共DNS服务器地址:223.5.5.5,223.6.6.6,8.8.8.8,114.114.114.114……
8.1 域名结构
8.2 DNS记录类型
记录类型 | 说明 | 应用场景 |
---|---|---|
A | 域名对应ipv4地址 | 常用 |
AAAA | 域名对应ipv6地址 | 常用(ipv6) |
CNAME记录 | 别名,将域名解析成域名2,网页会跳转到域名2对应的网站 | CDN、WAF |
TXT记录 | 对域名进行标识和说明。 | TXT 记录常用来做SSL数字证书 签发验证、SPF 记录(反垃圾邮件) |
MX记录 | 用于电子邮件系统发邮件时根据收信人的地址后缀来定位邮件服务器地址 | 企业邮箱 |
8.3 dig命令
dig:Domain Information Groper(域信息搜索器)是DNS查询工具。
格式:dig 选项 域名 查询类型
- 跟踪DNS解析过程:+trace
9. 思维导图
【金山文档】 思维导图 https://www.kdocs.cn/l/co3I7PtpTYQX