网络五层模型
1、分层是为了更高效的通信及定位错误
2、每一层都使用了一些协议,目的是为了通信双方能够正常的通信以及理解对方的用途,
3、每一层的实现,都是为了上层功能的实现做好了铺垫
4、越靠下的层,越接近硬件,越靠上的层越接近用户
5、每层都对数据进行封装
实体层
1、通过物理手段,将设备链接起来
2、按照逻辑电位(高电位1,低电位0)进行数据的传输
ps:无法解析传输过来的数据:0101010101011101011100
链路层
1、确定了电信号的分组方式,把每组电信号当成一个数据包(帧)
2、数据通过网卡进行接收和传输的,确认了网卡到网卡的通信
3、以广播的形式通过物理介质发送给接收方
Head:
发送者和接收者信息,固定为18字节
Data:
发送的具体内容,最短为46字节,最长为1500字节,超出范围则分为多个帧
尾部:
固定4个字节,表示数据帧校验序列,用于确定数据在传输中是否损坏
**协议:**以太网协议
1、规定一组电信号为一个数据包(帧),并将帧分为两部分。
2、连入网络的所有设备,必须具备万卡,数据包从一块网卡到另一块网卡。网卡的地址就是发送者信息和接收者信息下,也就是Mac地址。
引发的问题
1、发送者如何知道接收者的Mac地址?
2、发送者如何知道接收者和自己同属一个局域网?
3、如果接受者和自己不在一个局域网,数据包如何发送给对方?
网络层
1、网络层引入三个协议,IP协议,ARP协议,路由协议,实现设备到设备的通信
ARP寻址协议
1、PC1发送一个请求包,包含了目标计算机得IP地址;
2、PC1发送数据包到交换机;
3、交换机将PC1得数据包进行整个局域网得转发
4、每台计算机都查看PC1发送过来得数据包,对比其中的IP地址;
5、IP相同则接收,并回复Mac地址,否则丢弃;
IP协议
制定了一套新的地址,使我们能够区分两台主机是否同属于一个网络。
路由协议
1、通过IP协议判断两台设备是否处于统一网络中,如果在,则通过ARP获取Mac地址
2、如果不在,则将数据转发到网关进行路由。网关是互联网中网络与网络的桥梁,多次转发后数据到达设备所处网络中,然后APR获取Mac地址
3、完成路由协议的设备就是路由器
传输层
1、明确端口,表明应用身份,实现端口到端口的通信。
Head:
源端口号和目标端口号
Data:
尽量不要超过IP数据包的长度,否则会再次分割。
UDP:
不可靠,不稳定
效率高
TCP协议:
可靠,稳定
应用层
1、定义数据格式,并按照正确的格式解读。
梳理
整体流程–浏览器发送一个http请求后实际发生了什么?
**应用层 (Application Layer):**生成应用层数据。例如,用户在浏览器中输入 URL,浏览器生成一个 HTTP 请求。
**数据:**GET / HTTP/1.1 Host: example.com
**传输层 (Transport Layer):**将应用层数据封装为传输层数据单元(如 TCP 段)。传输层添加 TCP 头部信息,包括源端口、目标端口、序列号等。
**数据单元:**TCP 段
封装:[TCP 头部] [HTTP 数据]
**网络层 (Network Layer):**将传输层数据单元封装为网络层数据单元(如 IP 数据包)。网络层添加 IP 头部信息,包括源 IP 地址、目标 IP 地址、TTL 等。
**数据单元:**IP 数据包
封装:[IP 头部] [TCP 段]
**数据链路层 (Data Link Layer):**将网络层数据单元封装为数据链路层数据单元(如以太网帧)。数据链路层添加 MAC 头部信息,包括源 MAC 地址、目标 MAC 地址、帧类型等。
**数据单元:**以太网帧
封装:[以太网头部] [IP 数据包]
**物理层 (Physical Layer):**将数据链路层数据单元转换为物理信号,通过物理介质(如电缆、光纤、无线电波)传输。
**数据单元:**物理信号
**传输:**通过网络介质传输
而在介质传输之前,还包括几个步骤:
1. DNS 解析(应用层)
当用户在浏览器中输入 URL(例如 http://example.com),浏览器首先通过 DNS 解析获取目标主机的 IP 地址。
- **DNS 请求:**浏览器向 DNS 服务器发送查询请求。
- **DNS 响应:**DNS 服务器返回目标主机的 IP 地址(例如 192.168.1.10)。
2. ARP 寻址(数据链路层)
获取到目标主机的 IP 地址后,客户端需要知道该 IP 地址对应的 MAC 地址,以便在本地网络中传输数据。
- **检查 ARP 缓存:**客户端检查本地 ARP 缓存中是否已有目标 IP 地址的 MAC 地址。
- **ARP 请求:**如果缓存中没有,客户端在本地网络上广播 ARP 请求,询问 “谁是 192.168.1.10?”。
- **ARP 响应:**目标主机 192.168.1.10 返回其 MAC 地址(例如 00:1A:2B:3C:4D:5E)。
- **更新 ARP 缓存:**客户端将目标 IP 地址和 MAC 地址对应关系存储在 ARP 缓存中。
3. TCP 握手(传输层)
在传输层,客户端和目标服务器需要建立一个可靠的 TCP 连接,这包括 TCP 三次握手。
- **SYN 包:**客户端发送 SYN 包到服务器,表示请求建立连接。
- **SYN-ACK 包:**服务器收到 SYN 包后,返回 SYN-ACK 包,表示同意建立连接。
- **ACK 包:**客户端收到 SYN-ACK 包后,发送 ACK 包,确认连接建立。
4. 数据封装和传输
一旦 DNS 解析、ARP 寻址和 TCP 握手完成,客户端可以开始封装和发送数据。
- **应用层:**生成 HTTP 请求报文。
- **传输层:**HTTP 请求报文封装在 TCP 报文段中。TCP 报文段包含源端口号和目标端口号。
- **网络层:**TCP 报文段封装在 IP 数据报中。IP 数据报包含源 IP 地址和目标 IP 地址。
- **数据链路层:**IP 数据报封装在以太网帧中。以太网帧包含源 MAC 地址和目标 MAC 地址。
- **物理层:**以太网帧转换为比特流,通过物理介质(如电缆、光纤、无线电波)传输。
TCP/IP协议栈干了一件什么事?
1、获取应用程序要传输的数据
2、new Socket(IPV4,TCP/UDP/Stream/Datagram),确定好传输协议
3、封装端口号、IP地址
4、MAC地址,封装Mac地址
5、确定对方和自己的设备处于同一个网络中
为什么udpop数据包的最大长度是65536?
1.UDP报头结构
UDP报头包括四个字段,每个字段2字节(16位)
- 源端口号:16位
- 目标端口号:16位
- 长度: 16位
- 校验和:16位
2.UDP字段长度
字段长度是指定整个UDP数据报的长度,包括UDP报头和UDP数据。由于这个字段是16位的,所以是2的16次方-1 即65535
3.IP报头结构
UDP数据报同偿封装在ID数据报内。IPv4头部也有一个总长度字段,总长度字段为16位,表示整个Ip数据报的长度,包括IP头部和数据。这个字段同样表示的最大值是65535
TCP的特性
UDP的发送与接收中产生的问题
发送端(网关):
1、ipv4协议约定
UDP的一个数据包最大为65536k
2、应用层分片
发送端主动对发送的udp报文进行拆分
接收端:
1、mtu
最大接收单元 1450 ===》 IP分片、重组(消耗时间)
2、ip分片
3、UDP缓冲区