计网学习记录-1
TCP/IP模型
应用层
为用户提供网络的功能,有HTTP,DNS协议
传输层
TCP和UDP,用来建立连接传输数据
端口在这一层
网络层
IP协议在这一层,将传输层的报文作为数据部分加上IP包头部
通过众多路由实现找到目标所在的子网,然后发到子网里
网络接口层
有MAC标识,世界上唯一的网络设备
经典问题,从输入网址到网址显示,期间发生了什么
也是一层层往下来看
应用层
- 首先解析URL,生成发送给服务器的请求
比如https://xiaolincoding.com/network/1_base/what_happen_url.html#孤单小弟-http 协议名://服务器名/目录名…/文件名 - 生成http请求消息
包含请求行,消息头,消息体 - DNS查询解析
将域名解析为ip地址- 先到本地dns
- 查询不到就去根域名服务器,根域名服务器不负责解析,但是会告诉去哪里解析
- 根域名服务器发现后缀是.com后就去.com的顶级域名服务器
- 顶级域名服务器再指向负责不同区域的权威域名服务器
- 解析成功后返回,并缓存在本地DNS服务器
协议栈
从上往下,调用socket库委派下方任务
TCP
传输数据之前,三次握手建立连接
- 服务端监听某个端口,变为LISTEN状态
- 客户端发送SYN到服务端,自身变为SYN_SENT状态
- 服务端接收到,然后返回SYN_ACK请求,自身变为SYN_RECV状态
- 客户端接收到后,返回ACK请求,自身变为ESTABLISHED状态
- 服务端接收到ACK,自身变为ESTABLISHED状态
要注意,客户端先established
并且每次发送都会带上序列号,返回就序列号+1
目的是:保证双方都有发送和接收的能力
建立之后,为数据包加上TCP头,加上端口号和目标端口号
网络层
加上源IP地址和目标IP地址
网络接口层
加上MAC地址和目标MAC地址
通过路由器的ARP协议实现
路由器会在内部建立一个对应表缓存
之后就是从网卡发送到交换器,到路由器层层跳转到服务器
然后服务器不断解包,获得相应数据
计网学习记录-1
http://example.com/2024/04/23/计网学习记录-1/