第七节课【计算机网络基本概念与实际应用】
这是我参与「第三届青训营 -后端场」笔记创作活动的第4篇笔记
客户端访问服务器的网络传输过程
客户端 -> 路由器 -> 路由器运营商网络 -> 服务器A运营商网络 -> 服务器A
-> 服务器B运营商网络 -> 服务器B
同网段如何发包/交互
- 发送ARP请求,通过IP地址查找其Mac地址,再通过发送目的Mac为查找结果的包来实现交互
路由工作在哪一层协议
- 大部分情况下工作在网络层
- 但当用到动态路由相关的协议如OSPF、RIP时,由于这些协议的实现基于传输层,所以路由的工作也会涉及到传输层
路由发包改的是IP地址吗
- 不是,包的目标IP地址应该是一直不变的,否则包就无法到达目的地
- 通过最长前缀匹配找到路由的下一跳后,对其发送ARP请求,得到其Mac地址,再将包的目标Mac地址改为对应Mac地址,从而将包发往下一跳。
ARP协议
- 逻辑同网段才能发送ARP请求(先找到下一跳,然后ARP请求求得Mac地址,再通过Mac地址传输,一级一级前往目的地)
- ARP请求使用广播,ARP应答使用单播(广播询问该IP是否在网段内,单播根据广播内包含的Mac发送应答,不干扰其他设备)(同样的,广播只能在同网段内发送)
- 本质:查找下一跳的Mac地址,而非目标Mac地址
免费ARP
- 局域网新增设备时,无需其他设备发送ARP请求,新增设备直接向其他设备发送自己的Mac地址(效率提升)
- 防止新增的IP与原有IP冲突
ARP代理
- 在交换机上做劫持,捕获目的ARP请求包使其发往其他地方(软件定义网络)
IP协议
- 具有唯一性
Mac地址不能代替IP地址吗
- 不能,有些旧的设备不兼容Mac协议,为了兼容这些设备能用Mac和不能用Mac的设备,而使用IP协议
- Mac地址不利于路由表的维护
IPv4地址不够用,怎么解决
- 使用NAT(网络地址转换)即区分内网和外网(公网)
DNS请求
- 网络传输先请求DNS,也就是请求域名对应的IP地址,得到IP地址再向服务端发送请求
UDP协议
- 用于传输DNS请求
- 本身相对简单,不具有超时重传,拥塞控制等等保障协议可靠的手段
TCP协议
拔了网线,连接会断吗
- 如果TCP有”保活“机制,则可以通过心跳包来判断双方是否都在线上,没有则会断开连接
三次握手
握手阶段
- 发送方第一次:Seq = 0, Ack = 0
- 接收方第二次:Seq = 0, Ack = 1(Ack表示期望下一次收到的Seq序列号,为什么期望是1?因为每发送长度1的数据,下一次发送Seq就会+1)
- 发送方第三次:Seq = 1(0 + 1),Ack = 1
数据传输阶段
- 发送方:发送Len:725的数据,Seq = 1,Ack = 1
- 接收方:Seq = 1, Ack = 726(表示期望下次收到的Seq值为726)
HTTP协议
- 本质依然是TCP