IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 网络协议 -> 2021-08-04 -> 正文阅读

[网络协议]2021-08-04

物理层

物理层基础知识

数据:传送信息的实体

信号:数据的电气或电磁表现,是数据在传输过程中的存在形式

码元:用一个固定时长的固定波长(数字脉冲)表示一位k进制数字,1码元可以携带若干比特的信息量

奈奎斯特定理和香农定理

具体的信道所能通过的频率范围总是有限的

奈奎斯特定理

在理想低通(没有噪声、带宽有限)的信道中,为了避免码间串扰

  • 极限码元传输速率:2W波特
  • 极限数据传输速率:2WlogV

(W:理想低通信道的带宽,V:每个码元离散电平的数量)

由奈奎斯特定理有以下结论:

  1. 在任何信道中,码元传输速率是有上限的,超过这个上限,就会出现严重的码间串扰问题
  2. 信道的频带越宽,就可用更高的速率进行码元的有效传输
  3. 奈氏准则给出了码元传输速率的限制,但并未对信息传输速率给出限制,要提高数据传输速率,就必须设法使每个码元携带更多比特的信息量,此时就需要采用多元制的调制方法

香农定理

在有高斯白噪声且带宽有限的信道中

  • 极限数据传输速率:Wlog(1+S/N),其中S/N单位是db(分贝)

(W:信道的带宽,S/N:信噪比,当单位是db时,信噪比=log10(S/N) )

香农定理从侧面表明,一个码元对应的二进制位数是有限的

编码与调制

数据无论是数字的还是模拟的,都必须转变成信号才能加以传输

将数据变换为数字信号的过程称为编码,将数据变换为模拟信号的过程称为调制

数字数据可以通过数字发送器转换为数字信号传输,也可以通过调制器转变为模拟信号传输

模拟数据可以通过PCM编码器转换为数字信号传输,也可以通过放大器调制器转换为模拟信号传输

数字数据编码成数字信号

传输层

传输层基础知识

从通信和信息处理的角度看,传输层为应用层提供通信服务,属于面向通信部份的最高层,同时也是用户功能的最底层

传输层功能

  1. 为运行在不同主机上的进程之间提供端到端(区别于点到点)的逻辑通信。网络层提供主机之间的逻辑通信,所以即使网络层协议不可靠(网络层协议使分组丢失、失序或重复),传输层同样能为应用程序提高可靠的服务
  2. 复用和分用。复用是指发送方不同的应用进程都可以使用同一个传输层协议发送数据;分用是指接收方的传输层在剥去报文的首部后能够把这些数据正确交付到目的应用进程。(网络层也用复用和分用,但是网络层的复用是指发送方不同协议的数据都可以封装成IP数据包发送出去,分用是指接收方的网络层在剥去首部后把数据交付到相应的协议)
  3. 对收到的报文进行差错检测(首部和数据),相当于对IP数据包的数据部分进行校验。网络层只检查IP数据报的首部,不检验数据部分是否出错
  4. 提供两种不同的传输协议。而网络层无法同时实现两种协议(即在网络层要么只提供面向连接的服务,如虚电路;要么只提供无连接服务,如数据报,而不可能在网络层同时存在这两种方式)

传输层端口

端口号:16bit,能表示65536(2^16)个不同的端口

服务器端使用的端口。分类两类,一类是熟知端口号(0~1023),被指派给了TCP/IP最重要的一些应用程序;另一类称为>登记端口号(1024~49151),供没有熟知端口号的应用程序使用,使用这类端口号必须在IANA登记以防重复

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-LlDA8eLL-1628071032570)(…/…/pic/计算机网络/image-20210804123324013.png)]

客户端使用的端口号。数值为49152~65535(49152转换为二进制为1100000000000000),由于这类端口号仅在客户进程运行时才动态地选择,因此又称短暂端口号(也称临时端口),通信结束后,刚用过的客户端口号就不复存在,从而这个端口号就可供其他客户进程以后使用

套接字

套接字Socket = (IP地址:端口号)

唯一地标识网络中的一台主机和其上的一个应用(进程)

UDP协议

1、UDP基础

1)UDP无须建立连接。因此UDP不会引入建立连接的时延

2)无连接状态。TCP需要在端系统中维护连接状态,此连接状态包括接收和发送缓存、拥塞控制参数、序号和确认号的参数,而UDP不维护连接状态,也不跟踪这些参数,因此某些专用服务器使用UDP时,一般都能支持更多的活动客户机

3)分组首部开销小。TCP 20B,UDP 8B

4)应用层能更好地控制要发送的数据和发送时间。某些实时应用要求以稳定的速度发送,能容忍一些数据的丢失,但不允许较大的时延

UDP常用于一次性传输较少数据的网络应用,也常用于多媒体应用

UDP是面向报文的。对于应用层交下来的报文,添加首部后就向下交付给IP层,既不拆分也不合并,而是保留这些报文的边界;对于IP层交上来的UDP数据报,在去除首部后就交付给上层应用进程,一次交付一个完整的报文。因此,应用程序需要选择合适大小的报文

1、首部格式

image-20210804130358859

UDP长度:UDP数据报的长度(包括首部和数据),其最小值是8(仅有首部)

UDP校验和:检测UDP数据报在传输中是否有错(包括首部和数据)。该字段是可选的,当源主机不想计算校验和时,则直接令该字段为全0

如果接收方UDP发现收到的报文中的目的端口号不正确(即不存在对应于端口号的应用进程),那么就丢弃该报文,并由ICMP发送"端口不可达"差错报文给发送方

2、UDP校验

image-20210804143656342
  • 发送方

    1)将"全零"放入校验和字段并添加伪首部

    2)将UDP数据报视为许多16位的字,若UDP数据报的数据部分不是偶数个字节,则要在数据部分末尾填入一个全零字节(但此字节不发送)

    3)按二进制反码计算这些16位字的和,若校验和为全0就其置为全1,然后将此和的二进制反码写入校验和字段,并发送

  • 接收方

    1)将收到的数据报添上伪首部(同样不是偶数字节需要用全零补齐)

    2)按二进制反码求16位字的和,当无差错时结果应为全1,否则表明有差错(可以丢弃,可以向上层交付,但是此时需要附上错误报告)

TCP基础

1、报文格式

image-20210713120347803

2、三次握手

最主要目的是保证连接是双工的

建立TCP连接,需要客户端和服务端总共发送至少三个包确认连接的建立。流程如下

image-20210713120605907

初始

Client:CLOSED(关闭状态)
Server: LISTEN(监听状态)

第一次握手

##过程
Client将标志位SYN置1,随机产生一个值seq=x,并将数据包发给Server
Client进入SYN-SENT状态
Server进入SYN-RCVD状态

##
Client什么都不能确认   
Server确认了对方发送正常

第二次握手

##过程
Server收到数据包后标志位SYN=1知道Client请求建立连接
Server将标志位SYN和ACK都置1,随机产生一个值,并将数据包发给Client确认连接请求
Client进入ESTABLISHED状态

##
Client确认:自己发送/接收正常,对方发送/接收正常
Server确认:自己接收正常 ,对方发送正常

第三次握手

##过程
Client收到确认后若ACK为1,则将该数据包发送给Server,Server检查ACK为1则连接建立成功
Server进入ESTABLISHED状态
完成三次握手,可以传输数据

##
Server确认:自己发送/接收正常, 对方发送/接收正常

思考:

为什么建立连接是三次握手,二次,四次不可以吗

一个半工连接的建立需要两次握手,即能确定发送/接收正常

二次无法保证双工

四次由于服务端能携带发送ACK和SYN而显得多余

3、四次挥手

终止TCP连接,需要客户端和服务端总共发送4个包确认连接的断开。流程如下

image-20210713121800450

第一次挥手

##过程
Clien发送一个FIN,用来关闭Client到Server的数据传送
Client进入FIN_WAIT_1状态

第二次挥手

##过程
Server收到FIN后,发送一个ACK给Client
Server进入CLOSE_WAIT状态

第三次挥手

##过程
Server发送一个FIN,用来关闭Server到Client的数据传送
Server进入LAST_ACK状态。

第四次挥手

##过程
Client收到FIN后
Client进入TIME_WAIT状态,发送ACK给Server
Server进入CLOSED状态,

思考:

1)为什么关闭连接要四次挥手?

? 一个半工连接的关闭需要两次挥手

? 不同于双工连接的建立时,一端能携带发送SYN和ACK,由于一端可能在收到另外一端的关闭请求时还有数据要发送,所以ACK和FIN不能携带发送,所以需要四次

2)为什么需要TIME_WAIT状态

  • 可靠的终止TCP连接

    这样可让TCP再次发送最后的ACK以防这个ACK丢失(另一端超时并重发最后的FIN)这种2MSL等待的另一个结果是这个TCP连接在2MSL等待期间,定义这个连接套接字不能再被使用。这个连接只能在2MSL结束后才能再被使用。

  • 保证让迟来的TCP报文段有足够的时间被识别并丢弃

    每个具体TCP实现必须选择一个报文段最大生存时间MSL。它是任何报文段被丢弃前在网络内的最长时间。

应用层

网络应用模型

C/S模型

  • 过程:用户提出服务请求,网络将这种用户请求传送到服务器;服务器执行用户请求,完成所要求的操作并将结果送回用户
  • 客户端(Client):服务请求方,通常位于前端,面向用户
  • 服务端(Sever):服务提供方,通常位于后端,面向任务

注意点:

  1. 在连接未建立前,服务器在某一个端口监听,客户端必须知道通信服务器的地址才能发出连接请求,而服务器不需要提前知道客户端的地址,服务器从客户端发来的数据包中获取客户端的地址
  2. 一旦连接建立,服务器就能响应客户端的连接请求,服务器也能主动发送数据给客户端,用于一些消息的通知,如一些错误的通知
  3. 客户端和客户端之间不能之间通信
  4. 服务器的性能决定整个系统的性能

P2P模型

整个网络的传输内容不再保存在中心服务器上,每个结点同时具有下载、上传的功能

P2P通信模式是指P2P网络中对等节点之间的直接通信能力

P2P网络是指在互联网中由对等结点组成的一种覆盖网络,是一种动态的逻辑网络

P2P实现技术是指为实现对等结点之间的直接通信的功能所需要设计的协议和软件等

DNS域名系统

将便于人类记忆的域名解析成IP地址

模型:C/S

端口:53

域名层次空间

层次树状结构的命名方法,域

  • 不区分大小写
  • 除连字符(-)外不能使用其他的标点符号
  • 每个标号不超过63个字符,多标号组成的完整域名不超过255个字符
  • 级别最低的域名写在最左边,级别最高的顶级域名写在最右边

顶级域名:(3类)

  • 国家顶级域名,.cn(中国).us(美国),国家顶级域名下注册的二级域名由该国家自行确定
  • 通用顶级域名,.com(公司).net(网络服务机构).org(非营利性组织).gov(国家或政府部门)
  • 基础结构域名,arpa,用于反向域名解析,因此又称反向域名

域名服务器

因特网的域名系统被设计成一个联机分布式的数据库系统,并采用C/S模型,域名到IP地址的解析是由运行在域名服务器上的程序完成

根域名服务器

最高层测的域名服务器,所有的根域名服务器都知道所有顶级域名服务器的IP地址。不管哪个本地域名服务器,若要对因特网上的任何一个域名进行解析,只要自己无法解析,就首先要求助于根域名服务器

因特网上有13个根域名服务器,每个服务器实际上是冗余服务器集群,以提供安全性和可靠性

顶级域名服务器

负责管理在该顶级域名服务器注册的所有二级域名

授权域名服务器(权限域名服务器)

每台主机都必须在授权域名服务器处登记,为了更加可靠地工作,一台主机最好至少有两个授权域名服务器,实际上,很多域名服务器都同时充当本地域名服务器和授权域名服务器

授权域名服务器总能将其管辖的主机名转换为该主机的IP地址

本地域名服务器

当一台主机发出一个DNS查询请求时,这个查询请求报文就发送给该主机的本地域名服务器

域名解析过程

当客户端需要域名解析时

  网络协议 最新文章
使用Easyswoole 搭建简单的Websoket服务
常见的数据通信方式有哪些?
Openssl 1024bit RSA算法---公私钥获取和处
HTTPS协议的密钥交换流程
《小白WEB安全入门》03. 漏洞篇
HttpRunner4.x 安装与使用
2021-07-04
手写RPC学习笔记
K8S高可用版本部署
mySQL计算IP地址范围
上一篇文章      下一篇文章      查看所有文章
加:2021-08-05 17:42:25  更:2021-08-05 17:42:39 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年12日历 -2024/12/27 13:00:30-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码
数据统计