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 小米 华为 单反 装机 图拉丁
 
   -> 网络协议 -> 学习总结:计算机网络相关知识 -> 正文阅读

[网络协议]学习总结:计算机网络相关知识

计算机网络七层模型

应用层

这一层是最靠近用户的,主要负责给用户提供网络服务

表示层

这一层主要负责数据的安全、压缩等,可以把数据加密或者解密,主要确保数据传输过后可以被目标主机读取。类似翻译官。

会话层

负责在两个主机之间建立、维持、断开通信。主要工作是发起会话请求,与目标主机建立通信。

传输层

专门负责数据传输的层,数据一旦离开网卡便进入了传输层。这一层主要有TCP、UDP等传输协议,定义了传输数据的协议端口号,并进行流量控制以及差错校验,是极其重要的一层。通常的工作是把数据进行分段传输,到达目的地之后再以正确的方式重组。

网络层

进行逻辑选址,选择最合适的路径进行传输。不同地理位置的两台主机之间,会存在不同的路径,就好像条条大路通罗马一样,所以就需要网络层进行逻辑选址,选择一条优先级最高的、质量最好的路径进行传输。

数据链路层

通常物理介质都是不可靠的,因为在传输的途径中难免会有损失,特别是长途传输。所以就需要数据链路层,这一层就是负责在不可靠的介质上进行可靠的数据传输。
它会把接收到的数据分割成帧,然后根据帧中包含的发送者与接收者的信息进行硬件寻址,并且可以检测发送的过程中是否有差错,如果有差错就通知发送方重传。

物理层

负责建立、维护、断开物理连接,代表着一系列物理设备比如:网卡、网线等,其作用就是为数据传输提供物理介质,在这一层主要传输的是比特流。

总结

当在广州的主机A想要给在深圳的主机B传输数据时,首先他们之间必须要有物理媒介,也就是网线网卡等物理层。然后再通过应用层发起网络服务,期间会话层会开启的通信窗口,之后数据通过表示层转换好,之后通过网络层选择合适的路径,并把数据传到数据链路层,确定发送方与接收方之后,通过传输层传输过去。

TCP三次握手、四次挥手

TCP协议是传输层的协议,是一个可靠的传输协议,在客户端与服务端建立连接的时候,就需要进行三次握手,才可以建立连接。而断开连接的时候,则需要四次挥手。

序列号seq

TCP协议会把连接中发送的所有数据字节都编上一个序号,第一个字节的编号由本地随机产生。在给字节编上序号后,就给每一个报文段指派一个序号。而序列号指的就是报文段的第一个字节的数据编号。

确认号ack

表示期待收到对方下一个报文段的第一个数据字节的序号,一般来说就是序列号+1.

标志位

标志位的值要么是1,要么是0。
SYN:连接建立时用于同步序号。SYN=1表示这是一个连接请求,握手完成后SYN标志位被置0。
ACK:作为判定确认号是否有效的标志。为1则有效
FIN:用来释放一个连接。FIN=1表示此报文段的发送方的数据已经发送完毕,并要求释放连接。

三次握手

第一次握手

客户端发送请求,标志位SYN=1,seq=x,表示请求与服务端连接,进入SYN_SENT状态。

第二次握手

服务端确认接收到客户端的SYN请求,因此先发送ACK=1,ack=x+1,同时服务端向客户端发送SYN请求,seq=y。

第三次握手

客户端确认接收到服务端的SYN请求,发送ACK=1,ack=y+1,seq=x+1。自此握手结束,连接建立完成,客户端和服务端之间可以进行数据传输。

为什么需要第三次握手

如果没有第三次握手,在二次握手之后就建立了链接,那么假如发生网络延时,导致对于服务端来说,虽然服务端成功进行了第二次握手,并且开辟了端口,但是客户端却没有接收到确认请求,那么客户端便不会传输数据,而服务端就会一直处于等待传输数据的状态,浪费资源。且客户端之后会进行超时重连,此时服务端就相当于开辟了两个端口却只使用了一个。

四次挥手

第一次挥手

客户端发送FIN=1,seq=u的请求,表示想要断开连接

第二次挥手

服务端接收到客户端发送的断开连接的请求,但是因为此时可能还有数据正在传输,所以服务端会先发送ACK=1,seq=v,ack=u+1的确认请求,表示我接受到了客户端的断开连接的请求

第三次挥手

此时服务端已经完成了数据传输,就发送FIN=1,ACK=1,seq=w,ack=u+1的请求,表示已经发送完了数据,想要断开连接

第四次挥手

客户端发送ACK=1,ack=w+1,seq=u+1的报文,表示确认关闭连接。至此连接关闭。

为什么需要四次挥手

因为TCP是一个可靠传输协议,在断开连接之前必须确保数据全部传输完毕,所以就需要先确认接受请求,等到传输完毕之后在发送断开连接的氢气。

为什么TCP是可靠协议

连接和断开

需要三次握手以及四次挥手才能够连接或者断开

确认重传

发送数据的过程中,发送方发送的每一个数据,都需要收到接收方的确认,否则就会重新发送

流量控制

有时,发送方发送速率过快,而接收方无法准时接受导致数据丢失,从而经常引起重传机制,导致资源浪费。因此就需要使用流量控制,让发送方根据接收方的实际接受效率来发送数据。TCP使用滑动窗户机制,会把部分数据包分成一个窗口,这个窗口的大小由接收方决定,然后在这个窗口内的数据包可以连续发送,不用等待确认请求再发送,如果发生了超时会依然重传数据。然后知道窗口的数据都发送完,就组成下一个窗口

拥塞避免

拥塞避免主要是针对网络的问题。

慢开始

慢开始阶段指的是在刚开始传输数据的时候,先传输少数数据,随后慢慢增大数据传输量的阶段,从1、2、4开始呈指数增长,直到达到慢开始门限,就会进入拥塞避免

拥塞避免

通过慢开始之后,此时一次传输的数据量已经很接近当前网络的负荷量了,如果继续指数增大,很可能会导致网络崩溃。所以就实行加法增大,直到检测到拥塞。

拥塞检测

如果一次性接收到啊是那个确认重传请求,表示此时网络已经拥塞,那么就会把当前传输的数据量重置为1,把慢开始门限重置为当前拥塞的一半。随后执行慢启动算法,直到慢开始门限又继续拥塞避免。
eg:
慢开始门限为16
传输数据量从1—>2—>4—>8—>16,此时达到慢开始门限,进入拥塞避免阶段,16—>17—>18—>19—20,加入此时检测到拥塞,便会把慢开始门限设置为10,也就是出现拥塞时的一半,把数据传输量重置为0,然后重复

快速重传

意思就是发送方会持续发送数据,并不需要等待接收方的每一个确认,而但是如果收到了三个重传请求,就会重新传输数据。

快速恢复

有时候在发生了拥塞之后,并不会直接执行慢启动算法,而是直接执行拥塞避免算法,因为此时可能我们不希望数据流突然减少,并且仍然有数据流动。

TCP和UDP的区别

1、TCP是可靠传输协议,有三次握手和四次挥手确保连接与断开,而UDP没有,想连就连,想寄就寄。
2、TCP有确认重传,UDP没有,所以UDP容易掉包
3、TCP是一对一的,UDP可以多对一
4、TCP传输慢,但稳定,适合传输大量数据;UDP传输快,不稳定,适合传输少量数据。
5、TCP容易被攻击,UDP漏洞少,比较安全。

HTTP请求格式

1、请求行。
由方法+URL+HTTP协议版本组成
2、请求头
请求类型,一般是POST或者GET
3、空行
一个空格行示请求头到此为止
4、请求数据
如果是GET则为空,如果是POST则会放置提交的数据

HTTP相应格式

1、状态行
由HPPT版本+状态码+文本描述组成
2、响应头
为响应报文添加了附加信息
3、响应文
就是一些相应参数。

HTTP与HTTPS的区别

1、HTTPS实际上就是HTTP+SSL协议,更加耗费资源
2、HTTP的数据明文传输,安全性较差。HTTPS加密传输,比较安全。
3、申请HTTPS需要申请证书。
4、HTTP的响应速度比HTTPS快,因为HTTPS不仅要TCP三次握手,SSL协议也需要。
5、两者使用的连接方式不同,端口也不一样

HTTP状态码

100-199,信息响应,表示接收到了请求,需要继续响应。
200-299,成功响应,操作成功且被处理
300-399,重定向,网页可能被转移,需要进一步操作
400-499,客户端错误,请求的语法错误或者无法完成请求
500-599,服务端错误,服务端处理请求过程中发生错误。

GET和POST的区别

1、GET请求的数据会暴露出来,但是POST不会,所以POST比较安全
2、GET可以缓存,POST不可
3、GET传输的数据较少,POST传输的数据比较多

  网络协议 最新文章
使用Easyswoole 搭建简单的Websoket服务
常见的数据通信方式有哪些?
Openssl 1024bit RSA算法---公私钥获取和处
HTTPS协议的密钥交换流程
《小白WEB安全入门》03. 漏洞篇
HttpRunner4.x 安装与使用
2021-07-04
手写RPC学习笔记
K8S高可用版本部署
mySQL计算IP地址范围
上一篇文章      下一篇文章      查看所有文章
加:2022-03-21 21:30:49  更:2022-03-21 21:35:16 
 
开发: 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年11日历 -2024/11/26 5:20:15-

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