浅入网络基础

浅入网络基础

Apr 05, 2024 ·
10 Min Read

TCP/IP协议族

http基础
http基础

TCP/IP 协议族按层次分分为4层,分别为应用层、传输层、网络层和数据链路层

✏️应用层

应用层决定了向用户提供用户服务时通信的活动

比如:FTP(文件传输协议)DNS(域名系统)、HTTP

📨传输层

传输层对上层应用层,提供处于网络连接中的两台计算机之间的数据传输

比如:TCP(传输控制协议),也就是面试经常被问到的三次握手四次挥手;UDP(用户数据报协议)

💻网络层

网络层用来处理在网络上流动的数据包。该层规定了通过怎样的路径(所谓的传输路线)到达对方计算机,并把数据包传送给对方。

🖨️链路层

链路层用来处理连接网络的硬件部分。包括控制操作系统、硬件的设备驱动、NIC、及光纤等物理可见部分。

📣TCP/IP通信传输流

http基础
http基础

发送端在层与层之间传输数据时,每经过一层时必定会被打上一个该层所属的首部信息。反之,接收端在层与层传输时,每经过一层时会把对应的首部消去。

网络体系结构

IP协议

IP协议的作用是把各种数据包传送给对方。属于网络层。

两个重要条件:IP地址 和MAC地址

注意:别把IPIP地址弄混。

TCP协议

TCP位于传输层,提供可靠的字节流服务。属于传输层。

套接字<源 IP 地址, 源端口号, 目的 IP 地址, 目的端口号>

套接字是实现多路复用和分解的关键(多路复用和多路分解在下面传输层讲)

字节流服务是指,为了方便传输,将大块数据分割成以报文段为单位的数据包进行管理。而可靠的传输服务是指,能够把数据准确可靠地传给对方(即三次握手四次挥手

❗❗TCP报文段结构

http基础
http基础
🤝🤝🤝三次握手

http基础

  1. 第一次握手:建立连接时,Client发送SYN报文段(SYN=1seq=x)Server ,并进入 SYN_SEND 状态,等待Server确认。
  2. 第二次握手Server收到SYN报文段后,确认接收,发回确认报文段(SYNACK报文段,SYN=1,ACK=1,seq=y,ack_seq=x+1),并此时Server进入 SYN_RECV 状态。
  3. 第三次握手Client收到ServerSYNACK报文段,向Server发送确认报文段(SYNACK报文段,SYN=0,ACK=1,seq=x+1,ack_seq=y+1),此包发送完毕,ClientServer进入 ESTABLISHED 状态,完成三次握手。

:第一次握手中的seq为 表示Client报文的起始序号。第二次握手中的seq表示Server报文的起始序号,ack_seq=x+1,表示Client序号x + 1前的我都收到了,希望收到x+1序号的报文。第三次握手同理,只是SYN变为0是因为连接已经建立。

🖐️🖐️🖐️🖐️四次挥手

http基础

  1. 第一次挥手Client发送一个FIN(FIN=1, seq=u),用来关闭ClientServer的数据传送,Client进入FIN_WAIT_1状态(只能收数据不能发送数据)
  2. 第二次挥手Server收到FIN段后,发送一个ACK(ACK=1, seq=v, ack_seq=u+1)ClientServer进入CLOSE_WAIT 状态。Client收到ACK段后进入 FIN_WAIT_2状态。
  3. 第三次挥手Server发送完最后一个数据段后,向Client发送FIN(FIN=1, ACK=1, seq=w, ack_seq=u+1),用来关闭ServerClient的数据传送,Server进入LAST_ACK状态。
  4. 第四次挥手Client收到FIN段后,Client进入 TIME_WAIT 状态,接着发送ACK(ACK=1, seq=u+1, ack_seq=w+1)ServerServer进入CLOSED状态,释放连接;Client等待2MSL时间,进入 CLOSED 状态,释放连接。

:通俗的说就是第一次挥手Client告诉Server请求断开连接;第二次挥手Server返回给Client说收到你的请求,可以关闭(半关闭,关闭了ClientServer发数据的通道;第三次挥手等Server发送完数据后,也向Client请求关闭连接;第四次挥手Client回复Server收到你的请求,同意关闭连接。

UDP提供无连接、不可靠的数据报传输服务,即无需握手,直接发送数据。DNS服务就是使用UDP 。使用的是53端口。

套接字<目的 IP 地址, 目的端口号>

传输层

传输层的核心任务是为了应用进程之间提供端到端的逻辑通信服务。

传输层主要实现的功能

  • 传输层寻址
  • 对应用层报文进行分段和重组
  • 对报文进行差错检测
  • 实现进程间的端到端的可靠数据传输控制
  • 面向应用层实现复用与分解
  • 实现端到端的流量控制
  • 拥塞控制

传输层的传输使用端口号来寻址

多路复用与分解:就是支持众多应用程序共用一个传输层协议,并能够将接收到的数据准确交付给不同的应用进程。

💬大致流程为:用户端监听应用程序的端口,哪个有数据待传输则取出(通过报文,打上标识(首部,交给网络层发送给目的主机。目的主机传输层收到数据后分解,解析套接字,交给对应的端口(应用程序

DNS服务

DNS服务是和HTTP协议一样位于应用层的协议。它提供域名到IP地址之间的解析服务。

简单来说就是,域名 查找IP地址 和IP地址 反查 域名 的服务

域名解析分为递归解析迭代解析

http基础
http基础
http基础
http基础

解析

递归解析:代替查询主机或其他域名服务器,进行进一步的域名查询。即你问我我不知道,但它(另一台域名服务器)可能知道,我帮你去问一下。

迭代解析:不会代替查询主机或其他域名服务器,进行进一步的域名查询,只是将下一步要查询的服务器告知查询主机或服务器。即你问我我不知道,但它(另一台域名服务器)可能知道,你去问它吧。

协议与HTTP协议 的关系👇👇👇

http基础
http基础
Last edited Feb 15