x
计网学习的核心内容就是网络协议的学习
看概念太牢了,举个例子辅助记忆和理解,这版没ai纯手打
以TCP/IP五层为例
应用层:HTTP,DNS
浏览器遵循HTTP 协议,构造了一个GET请求,代理触发DNS查询
1 | tomcat和Clash等代理的工作都是在HTTP等应用层的反向代理,不是DNS的反向代理 |
代理是位于客户端与服务器之间的中间实体,代表客户端完成某些请求,常见走正向代理或DNS代理
正向代理代表客户端连接服务器,反向代理代表服务器接收客户端
传输层:TCP
然后遵循TCP三次握手协议
客户端发SYN 服务端回SYN+ACK 客户端发ACK
1 | seq:"sequance"序列号;ack:"acknowledge"确认号;SYN:"synchronize"请求同步标志;;ACK:"acknowledge"确认标志";FIN:"Finally"结束标志。 |
网络层:IP
操作系统将TCP封装成IP数据报,加上IP头部,让路由器根据目标IP决定下一跳
操作系统OS
管理计算机硬件与软件资源的核心系统软件,为用户和应用程序提供一个统一接口
IP地址(网络号+主机号)
网络地址
主机号全为0,代表整个网络,比如在路由器配置静态路由,在防火墙规则中书写规则
10.0.0.0就是A类私有网络网络地址
广播地址
主机号全为1
组播地址
D类地址
受限广播地址
255.255.255.255
0.0.0.0
表示任何地址或本机暂时未分配的地址
回环地址
127.0.0.1
ABC类私有地址
10开头为大型企业内部网络
172开头为中型企业或学校机房,DOcker默认桥接网络172.17.0.0/12
192开头为家庭宽带路由器默认分配地址
1 | 然后我想到了c段旁站(奇怪联想,和c类私有地址做对比) |
数据链路层:以太网
通过以太网(即有线或WIFI)连接到路由器
将IP数据报封装成以太网帧,加上MAC头部,尾部由FCS用于检错
物理层:电信号/无线信号
全局链路
电脑发出
HTTP报文—TCP段—IP数据段—以太网帧—比特流
路由器收到后
路由从物理层接收比特,还原为以太网帧,去掉MAC头部,看到IP数据报,查路由表,决定下一跳,然后把IP数据报放进新的以太网帧,目标MAC换成下一条设备的MAC
之后的沿途每一条
只处理网络层,不会去掉TCP或HTTP头部,IP数据报的原目标IP在整个过程中保持不变
直到服务器收到
物理层—以太网帧—去掉MAC头部—去掉IP头部—去掉TCP头部—得到完整HTTP请求
浏览器收到响应
渲染出网页页面
每一层的作用
dns负责找到example.com,TCP负责保证数据不丢失不乱序,IP负责让客户端跨网络找到目标机器,让路由器能够逐跳转发,以太网MAC协议负责让客户端在同一局域网内发给正确设备(路由)
如有错误,多多指教