0
点赞
收藏
分享

微信扫一扫

3D包容盒子

求索大伟 2023-10-11 阅读 40

目录

应用层重点协议

传输层重点协议

1.UDP协议

(一)UDP协议段格式

 (二)UDP的特点

无连接

不可靠传输

面向数据报

全双工

缓冲区

大小受限

(三)基于UDP的应用层协议

(四)面试题

2.TCP协议 

(一)TCP协议段格式

 (二)TCP的特点

有连接

可靠传输

面向字节流

缓冲区

全双工

粘包问题

异常情况

(三)基于TCP应用层协议

​编辑网络层重点协议

IP协议

数据链路层重点协议

面试题


 

下面我们就来学习各个层的重点协议~~ 

 应用层重点协议

传输层重点协议

1.UDP协议

(一)UDP协议段格式

 (二)UDP的特点
无连接

知道对方的IP号和端口号就能直接进行传输,不需要建立连接

不可靠传输

没有任何安全机制,发送端发送数据报后,如果遇到网络故障该段无法发送过去,UDP协议层也不会给应用层返回任何错误信息

面向数据报

应用层发给UDP多长的报文,UDP原样发送,既不会拆分也不会合并

全双工

UDP的socket既能读也能写

缓冲区

UDP只有接收缓冲区,没有发送缓冲区

大小受限

UDP协议首部中有一个16位的最大长度。也就是说一个UDP能传输的数据最大长度是64K(包含UDP首部)。

(三)基于UDP的应用层协议
  • NFS:网络文件系统
  • TFTP:简单文件传输协议
  • DHCP:动态主机配置协议
  • BOOTP:启动协议(用于无盘设备启动)
  • DNS:域名解析协议

当然,也包括你自己写UDP程序时自定义的应用层协议。

(四)面试题

1. UDP本身是无连接,不可靠,面向数据报的协议,如果要基于传输层UDP协议,来实现一个可靠传 输,应该如何设计?

2. UDP大小是受限的,如果要基于传输层UDP协议,传输超过64K的数据,应该如何设计? 

2.TCP协议 

(一)TCP协议段格式

 (二)TCP的特点
有连接

在正常情况下,TCP要经过三次握手建立连接,四次挥手断开连接

那啥叫断开连接呢? 

A和B把自己存储的连接信息(数据结构)删了,连接就是断开了~~

三次握手:

  

四次挥手:

 

可靠传输

确认应答机制

超时重传机制

主机A发送数据给B之后,可能因为网络拥堵等原因,数据无法到达主机B;如果主机A在一个特定时间间隔内没有收到B发来的确认应答,就会进行重发;

但是,主机A未收到B发来的确认应答,也可能是因为ACK丢失了;

滑动窗口机制

刚才我们讨论了确认应答策略,对每一个发送的数据段,都要给一个ACK确认应答。收到ACK后再发送 下一个数据段。这样做有一个比较大的缺点,就是性能较差。尤其是数据往返的时间较长的时候

既然这样一发一收的方式性能较低,那么我们一次发送多条数据,就可以大大的提高性能(其实是将多 个段的等待时间重叠在一起了)

 那么如果出现了丢包,如何进行重传?这里分两种情况讨论。

情况一、数据包丢了

情况二、ack丢了

 流量控制机制

这是一种干预发送窗口大小的机制

滑动窗口越大,传输效率越高(一份时间,等待的ack越多)

但是,窗口也不能无限的大~否则会造成以下的问题:

1.完全不等ack,可靠性能否保障画上问号

2.窗口越大,也会消耗大量的系统资源

3.发送速度太快,接收方处理不过来,发了也白发

延时应答机制

 

面向字节流
缓冲区

创建一个TCP的socket,同时在内核中创建一个 发送缓冲区 和一个 接收缓冲区;

前面我们说过~网络上的传输可能后发先至

TCP使用这个接收缓冲区,对接收的数据进行重新排序,使应用程序read到的数据是保证有序的(和发送顺序一致)

全双工

既可以读数据,也可以写数据。

粘包问题

首先要明确,粘包问题中的 "包" ,是指的应用层的数据包。

在TCP的协议头中,没有如同UDP一样的 "报文长度" 这样的字段,但是有一个序号这样的字 段。

站在传输层的角度,TCP是一个一个报文过来的。按照序号排好序放在缓冲区中。

站在应用层的角度,看到的只是一串连续的字节数据。 

那么应用程序看到了这么一连串的字节数据,就不知道从哪个部分开始到哪个部分,是一个 完整的应用层数据包。

异常情况

(三)基于TCP应用层协议
  • HTTP
  • HTTPS
  • SSH
  • Telnet
  • FTP
  • SMTP
  • 当然,也包括你自己写TCP程序时自定义的应用层协议;

网络层重点协议

IP协议

协议头格式如下:

 举个例子:

 

特殊的IP地址:

  • 将IP地址中的主机地址全部设为0,就成为了网络号,代表这个局域网
  • 将IP地址中的主机地址全部设为1,就成为了广播地址,用于给同一个链路中相互连接的所有主机发送数据
  • 127.*的IP地址用于本机环回测试,通常是127.0.0.1
  • 本机环回主要用于本机到本机的网络通信,(系统内部为了性能,不会走网络的方式传输)

路由选择 

数据链路层重点协议

mac地址是6个字节的(比IPv4地址大很多)当前每个设备都有一个唯一的mac地址,不是动态分配的,而是网卡出厂的时候设置好的

MTU :

面试题

关于网络原理这块知识点,会有一个常考的面试题:

在浏览器输入www.baidu.com并按下回车后,到最终页面展示,涉及了许多网络原理和技术,以下是整个过程的简要步骤:

1. DNS解析:
   - 浏览器首先会将输入的URL解析成IP地址。这个过程称为DNS解析,它通过查询域名系统(DNS)来找到与www.baidu.com相关联的IP地址。

2. 建立TCP连接:
   - 一旦浏览器知道了目标服务器的IP地址,它会尝试与该服务器建立TCP连接。这是通过三次握手过程完成的,包括客户端向服务器发送连接请求,服务器回复确认,然后客户端再次确认。

3. 发起HTTP请求:
   - 一旦建立了TCP连接,浏览器将发起一个HTTP请求,以获取与www.baidu.com关联的网页。这个请求包含了要获取的页面信息,以及其他相关的HTTP头部信息。

4. 服务器处理请求:
   - 目标服务器(www.baidu.com)收到浏览器的请求后,会根据请求的内容和服务器上的配置来处理请求。通常,服务器会生成响应,包括网页内容、状态码和其他HTTP头部信息。

5. 服务器发送HTTP响应:
   - 一旦服务器处理完请求,它会将HTTP响应发送回客户端(浏览器)。这个响应包括HTTP状态码,例如200 OK表示成功,以及请求的网页内容。

6. 浏览器渲染页面:
   - 浏览器接收到HTTP响应后,会解析HTML、CSS和JavaScript代码,然后渲染页面。这包括将HTML结构转化为可见的网页,并加载和执行JavaScript代码以添加交互性和动态内容。

7. 页面展示:
   - 最终,浏览器将完整的网页渲染出来,并将其呈现在用户的屏幕上,用户可以看到和与网页交互。

举报

相关推荐

0 条评论