计网学习记录-1

TCP/IP模型

应用层

为用户提供网络的功能,有HTTP,DNS协议

传输层

TCP和UDP,用来建立连接传输数据

端口在这一层

网络层

IP协议在这一层,将传输层的报文作为数据部分加上IP包头部

通过众多路由实现找到目标所在的子网,然后发到子网里

网络接口层

有MAC标识,世界上唯一的网络设备

经典问题,从输入网址到网址显示,期间发生了什么

也是一层层往下来看

应用层

  1. 首先解析URL,生成发送给服务器的请求
    比如https://xiaolincoding.com/network/1_base/what_happen_url.html#孤单小弟-http 协议名://服务器名/目录名…/文件名
  2. 生成http请求消息
    包含请求行,消息头,消息体
    image
  3. DNS查询解析
    将域名解析为ip地址
    1. 先到本地dns
    2. 查询不到就去根域名服务器,根域名服务器不负责解析,但是会告诉去哪里解析
    3. 根域名服务器发现后缀是.com后就去.com的顶级域名服务器
    4. 顶级域名服务器再指向负责不同区域的权威域名服务器
    5. 解析成功后返回,并缓存在本地DNS服务器

协议栈

从上往下,调用socket库委派下方任务
image

TCP

传输数据之前,三次握手建立连接

  1. 服务端监听某个端口,变为LISTEN状态
  2. 客户端发送SYN到服务端,自身变为SYN_SENT状态
  3. 服务端接收到,然后返回SYN_ACK请求,自身变为SYN_RECV状态
  4. 客户端接收到后,返回ACK请求,自身变为ESTABLISHED状态
  5. 服务端接收到ACK,自身变为ESTABLISHED状态

要注意,客户端先established

并且每次发送都会带上序列号,返回就序列号+1

目的是:保证双方都有发送和接收的能力

建立之后,为数据包加上TCP头,加上端口号和目标端口号

网络层

加上源IP地址和目标IP地址

网络接口层

加上MAC地址和目标MAC地址

通过路由器的ARP协议实现

路由器会在内部建立一个对应表缓存

之后就是从网卡发送到交换器,到路由器层层跳转到服务器

然后服务器不断解包,获得相应数据


计网学习记录-1
http://example.com/2024/04/23/计网学习记录-1/
作者
WoodQ
发布于
2024年4月23日
许可协议