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 小米 华为 单反 装机 图拉丁
 
   -> 网络协议 -> 计算机网络 -> 正文阅读

[网络协议]计算机网络

1.网络协议

  • 物理层
  • 数据链路层
  • 网络层
  • 传输层
  • 应用层

2 建立连接

握手与挥手

2.1 三次握手

在这里插入图片描述

  • 第一次握手:建立连接时,客户端发送SYN包(seq=x)给服务器,并进入SYN-SENT状态,等待服务器确认。
  • 第二次握手:服务器收到SYN包,并回复应答包ACK(ack=x+1),同时自己也发送一个SYN包(seq=y),即ACK+SYN包,此时服务器进入SYN-RCVD状态。
  • 第三次握手:客户端接收到服务器发来的SYN+ACK包,向服务器发送确认包ACK(ack=k+1),此时客户端和服务器发包完毕,客户端和服务器进入ESTABLISHED(TCP连接成功)状态,完成建立连接。

2.2 四次挥手

在这里插入图片描述

  • 第一次挥手:客户端发送FIN包(FIN=1)给服务器,告诉自己数据已经发送完毕,请求终止连接,此时客户端不能发送数据,但还能接收数据,客户端进入FIN-WAIT1(终止等待1)状态。
  • 第二次挥手:服务器收到FIN包,回一个ACK包给客户端,告诉客户端我已经包了,此时还没有断开socket连接,而是等待剩下的数据传输完成。服务器进入CLOSE-WAIT(关闭等待)状态。服务器收到应答信号,变为FIN-WAIT2(终止等待2状态)
  • 第三次挥手:服务器将数据传输完毕,向客户端发送一个FIN包,表示服务器可以断开连接,服务器进入LASK-ACK(最后确认)状态
  • 第四次握手:客户端端收到服务器的FIN包,回复一个确认ACK包表示收到,等待一段时间(2msl 最大报文段生存时间)确保服务器不会再有数据发送过来,然后彻底关闭连接。

【问题4】如果已经建立了连接,但是客户端突然出现故障了怎么办?

TCP还设有一个保活计时器,显然,客户端如果出现故障,服务器不能一直等下去,白白浪费资源。服务器每收到一次客户端的请求后都会重新复位这个计时器,时间通常是设置为2小时,若两小时还没有收到客户端的任何数据,服务器就会发送一个探测报文段,以后每隔75秒钟发送一次。若一连发送10个探测报文仍然没反应,服务器就认为客户端出了故障,接着就关闭连接。

3.TCP与UDP

3.1 TCP和UDP的区别

在这里插入图片描述
1.TCP面向连接;UDP是无连接的,即发送数据之前不需要建立连接
2.TCP提供可靠的服务;UDP不保证可靠交付
3.TCP面向字节流,把数据看成一连串无结构的字节流;UDP是面向报文的
4.TCP有拥塞控制;UDP没有拥塞控制,因此网络出现拥塞不会使源主机的发送速率降低(对实时应用很有用,如IP电话,实时视频会议等)
5.每一条TCP连接只能是点到点的;UDP支持一对一,一对多,多对一和多对多的交互通信
6.TCP首部开销20字节;UDP的首部开销小,只有8个字节
TCP适用于文件传输,UPD适用于视频传输

3.2 TCP协议如何保证可靠传输

在这里插入图片描述

3.2.1 检验和

TCP首部+TCP数据+TCP伪首部三者组合,并通过某种计算,计算结果的16位中每一位都为1,则正确,否则说明发生错误

接收段通过校验和的方式,检测数据传输过程中是否有差错和异常,如果有差错直接丢弃这个报文段和不确认收到,发送端需要重新发送。

3.2.2 序列号/确认应答

发送端发送信息给接收端,接收端收到信息都需要回应一个包,应答包。
接收端没有发送应答(ACK)包,都会重发,或者接收到应答包。

3.2.3 超时重传

tcp要求每发送一个报文段,就启动一个定时器并等待确认信息。接收端接收到新数据后返回确认信息,如果定时器超时前==(略大于RTT报文往返时间+抖动的方差)==数据未被确认,tcp就认为此报文段中的信息已经丢失或者损坏,需要对报文段中的数据进行重新的组织与重传。

备注:如果一个包经过多次的重发也没有收到接收端的确认包,认为接收端异常,强制关闭连接。

3.3ARQ协议

3.4流量控制(主机之间的收发速率)

1.超时重传的效率低下,发送一个包到下一个包中间都需要等待一段时间。
2.两个主机之间因为传输速率不同可能引起的丢包问题。
3.TCP利用滑动窗口实现流量控制,控制发送方发送的速率,包装接收方能及时接收。

接收方发送确认报文中窗口的大小控制发送方的发送速率
可以多次发送,接收端可以进行多端的应答ACK。
通过下一次的确认包,可以判断接收端是否接收到了数据,如果数据被接收了,送发送缓存区里面删除数据。

如果接收端没有收到自己想要的数据之前,会对之前的数据进行重复的确认。发送端再收到某个应答包之后,又连续3次收到相同的应答包,数据丢失,需要重发(快重传)。

发送端如何知道丢包了:

  • 超时重传
  • 收到三个重复的ACK

3.5 拥塞控制(网络拥堵)

防止发送方发的太快,使得网络来不及处理,从而导致网络拥塞

  • 慢开始:当主机开始发送数据时,如果把大量的数据字节注入到网络中,可能会引起网络的拥塞,经验表明最好的方法是,由小增大发送窗口大小,每次收到确认,窗口的大小翻倍。
  • 拥塞避免:当窗口的大小到达阈值的实现,每经过一个RTT时间,发送窗口的大小线性增加1。
  • 快速重传和快速恢复:如果接收机收到一个不按照顺序发送的数据包,他会立即给发送机一个重复确认,如果发送端接收到三个重复的确认,会认为数据段丢失,立即重传数据段。
    在这里插入图片描述

4.网页

4.1 输入url地址到网页展开过程

  • 1.浏览器查找域名的ip地址(域名解析)
  • 2.浏览器向web服务器发送一个http请求(TCP连接)
  • 3.服务器响应请求(发送请求)
  • 4.服务器发回一个HTML响应(服务器处理请求返回HTTP报文)
  • 5.浏览器开始显示HTML页面(浏览器解析渲染页面,最后结束连接)

ps:url统一资源定位符----------标识唯一的资源

4.1 状态码

1xx:信息状态码
2xx:成功码
3xx:重定向码—>需要进行附加操作以完成请求
4xx:客户端错误码
5xx:服务器错误码

4.2http和https区别

计算机网络
在这里插入图片描述

  • 什么是http协议?
    一个客户端和服务器请求和应答的标准TCP协议。用于超文本传输到本地浏览器。

  • 什么是https协议?
    HTTP的安全版,http下加入了ssl层,https的安全基础就是SSL

  • 区别
    1.http默认端口是80,https默认端口是443
    2.http运行再tcp之上,所有传输的内容都是明文,客户端和服务器端都无法验证对方身份。
    https是运行再ssl上的http协议,所有传输的内容都是经过对称加密的。

对称加密与非对称加密
对称加密:密钥只有一个,加密与解密都是一个密码
非对称加密:

4.3 长链接与短链接

http1.0中默认使用短链接,客户端和服务器每进行一次http操作,就建立一次TCP连接,任务结束就中断连接。

http1.1中默认使用的是长连接,当打开一个网页后,客户端和服务器之间用于传输http数据的TCP连接不会关闭,客户端再次访问这个服务器的时候,可以接着使用这个连接。

keep-alive不会永远保持连接,它有一个保持的时间

4.4session与cookie

cookie和session都是用来跟踪浏览器用户身份的会话方式

  • cookie(保存客户端)一般用来保存用户信息:

  • session(保存在服务端)主要作用通过服务的记录用户状态:

  • 由于session保存在服务端,安全性较高。如一些敏感信息,一定不要写入cookie中,最好能将cookie信息加密,然后使用到的时候再去服务端解密。

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

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