为节约时间,阅读《网络是怎样连接的》的读书笔记,在此梳理框架以及重要的结构图
网络整体结构
详细流程
一、生成HTTP请求消息
- 首先在浏览器中输入网址URL,浏览器解析URL得到HTTP请求消息。
- HTTP请求消息就是最终要向WEB服务器发送的数据包。
- HTTP请求消息包括了(方法+URI)
形式如下图:
HTTP的响应消息可以看原链接
二、向DNS服务器获取Web服务器的IP地址
- 浏览器并不知道HTTP请求消息应该发往哪个IP地址,因此需要向DNS服务器查询
- 首先,浏览器将HTTP请求消息交给socket库处理,经DNS解析器解析后,解析器会向DNS服务器发送查询消息,然后DNS服务器会返回响应消息。响应消息中包含查询到的IP地址,解析器会取出IP地址,并将其写入浏览器指定的内存地址中。接下来,浏览器在向 Web服务器发送消息时,只要从该内存地址取出IP地址,并将它与HTTP请求消息一起交给操作系统就可以了。
DNS获取IP地址的流程:
本节还介绍了TCP/IP网络(子网,路由…),IP地址结构 等
三、协议栈发送消息
协议栈是网络控制软件
网卡是网络控制硬件
流程步骤:
- 创建套接字(描述符)
-
协议栈创建套接字(用socket),并返回一个描述符给应用程序用于识别这个套接字
-
套接字包括:协议+本地IP+本地端口+目的IP+目的端口
-
协议栈根据套接字中的控制信息来工作
- 连接服务器(connect,TCP三次握手)
- 发送数据(write,MTU 1500,数据包拆分,ACK号)
- 接受数据(read,HTTP响应消息)
- 断开连接(close,TCP四次挥手)
- 删除套接字
流程图:
TCP三次握手
数据包拆分:
ACK号:
TCP四次挥手
四、IP模块的包收发操作
发送包时:添加IP头部和MAC头部,然后发给网卡
- IP头部包括:IP地址和控制信息
- MAC头部包括:MAC地址和以太网控制信息(通过ARP协议查询目标路由器的 MAC地址)
接收包时:从网卡接收信息,并将 MAC头部和 IP头部后面的内容,也就是 TCP头部加上数据 块,传递给 TCP模块
网卡:将包转换为电信号进行传输;网卡的具体实现暂时用不到,先不记录了