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、OSI七层模型、TCP/IP四层结构、五层协议结构?

OSI七层模型:物理层、数据链路层、网络层、传输层、会话层、表示层、应用层

TCP/IP四层结构:网络接口层、网际层、运输层、应用层

五层协议:物理层、数据链路层、网络层、运输层、应用层

对应的层作用对应的网络协议/硬件
物理层提供数据传输的硬件保证,网卡接口,传输介质中继器、集线器、网关、光纤
数据链路层数据交换,传输的数据转换为二进制形式网卡、网桥、交换机
网络层路由选择,网络互联IP、ICMP
传输层用于端到端的可靠数据传输TCP、UDP
会话层用于建立用户级的连接,选择适当的传输服务SQL、RPC
表示层用于对数据的压缩、加密JPEG、MPEG、ASII
应用层提供用户服务,具体功能由应用程序实现HTTP、SMTP、DNS

2、TCP和UDP的区别?基于TCP、UDP的协议有哪些?

TCP提供面向连接的、可靠的数据流传输,而UDP提供的是无连接的、不可靠的数据流传输。

TCP保证数据正确性,UDP可能丢包,TCP保证数据顺序,UDP不保证。

TCP的传输单位称为TCP报文段,UDP传输单位称为用户数据报。

TCP注重数据安全性,UDP数据传输快,因为不需要连接等待,少了很多操作,但是其安全性却一般。

基于TCP的协议

  • HTTP:Web服务器传输超文本到本地浏览器的传送协议。
  • SMTP:邮件传送协议,用于发送邮件。服务器开放的是25端口。
  • FTP:定义了文件传输协议,使用21端口。

基于UDP的协议:

  • DNS:用于域名解析服务,将域名地址转换为IP地址。DNS用的是53号端口。

TCP:当对网络通讯质量有要求的时候,比如:整个数据要准确无误的传递给对方,HTTP、HTTPS、FTP等传输文件的协议会使用到。

UDP:当强调传输性能而不是传输的完整性时,要求网络通通讯速度能尽量的快:如QQ语音,QQ视频等。

3、面向连接与面向非连接区别?

面向连接的服务,通信双方在进行通讯之前,要先在双方建立起一个完整的可以彼此沟通的通道,在通信过程中,整个连接的情况一直可以被实时地监控和管理。

非面向连接的服务,不需要预先建立一个联络两个通信节点的连接,需要通信的时候,发送节点就可以往网络上发送信息,让信息自主地在网络上去传,一般在传输地过程中不再加以监控。

4、TCP协议如何保证可靠传输?

  • 对应用数据进行分割:将应用数据被分割成TCP认为最适合发送的数据块。
  • 对数据包进行编号:TCP给要发送的每一个数据包进行编号,接受方按照编号对数据包进行排序,把有序数据传送给应用层。
  • 校验和:这是一个端到端的检验,目的是检测数据在传输过程中的任何变化。如果接受端校验有差错,说明数据在传输过程中出了问题,接收端将丢弃不再接受该数据。
  • 流量控制:TCP连接的每一方都有固定大小的缓冲空间,TCP的接受端只允许发送端发送接收端缓冲区能接纳的数据。当接收方来不及处理发送方的数据,能提示发送方降低发送的速率,防止包丢失。TCP使用的是流量控制协议是可变大小的滑动窗口协议。(TCP利用滑动窗口实现流量控制)
  • 拥塞控制:当网络拥塞时,减少数据发送。防止过多的数据注入到网络中,避免传输链路过载。
  • ARQ协议:该协议也是为了实现可靠传输的,它的基本原理就是没发完一个分组就停止发送,等到对方确认。在收到确认后再发下一个分组。
  • 超时重传:当TCP发出一个报文段后,它启动一个定时器,等待接收端确认收到这个报文段,如果不能及时收到一个确认,将重发这个报文段。

滑动窗口实现流量控制: 流量控制是为了控制发送方发送速率,保证接收方来得及接收。

接受方发送的确认报文中的窗口字段可以用来控制发送方窗口大小,从而影响发送方的发送速率。将窗口字段设置为0,则发送方不能发送数据。

5、TCP如何实现拥塞控制?

为了进行拥塞控制,TCP发送方要维持一个拥塞窗口(cwnd)的状态变量。拥塞控制窗口的大小取决于网络的拥塞程度,并且动态变化。发送方让自己的发送窗口取为拥塞窗口和接收窗口中较小的一个。

TCP的拥塞控制采用了四种算法,满开始、拥塞避免、快重传和快恢复

  • 满开始:满开始算法的思路是当主机开始发送数据时,如果立即把大量数据字节注入到网络,那么可能会引起网络阻塞,因为现在还不知道网络的符合情况。经验表明,较好的方法是先检测一下,即由小到大逐渐增大发送窗口,也就是由小到大逐渐增大拥塞窗口数值,cwnd初始值为1,每经过一个传播轮次,cwnd加倍。
  • 拥塞避免:拥塞避免算法的思路是让拥塞窗口cwnd缓慢增大,即每经过一个往返时间RTT就把发送放的cwnd加1;
  • 快重传与快恢复: 在 TCP/IP 中,快速重传和恢复(fast retransmit and recovery,FRR)是一种拥塞控制算法,它能快速恢复丢失的数据包。没有 FRR,如果数据包丢失了,TCP 将会使用定时器来要求传输暂停。在暂停的这段时间内,没有新的或复制的数据包被发送。有了 FRR,如果接收机接收到一个不按顺序的数据段,它会立即给发送机发送一个重复确认。如果发送机接收到三个重复确认,它会假定确认件指出的数据段丢失了,并立即重传这些丢失的数据段。有了 FRR,就不会因为重传时要求的暂停被耽误。  当有单独的数据包丢失时,快速重传和恢复(FRR)能最有效地工作。当有多个数据信息包在某一段很短的时间内丢失时,它则不能很有效地工作。

6、TCP的三次握手和四次挥手

  • 为了准确无误的把消息发送目标地,TCP协议采用了三次握手策略。
  • 建立一次TCP连接需要”三次握手“。

为什么要进行三次握手?

  1. 第一次握手,为了让服务端认为客户端发送消息能力正常,服务端认为服务端接收能力正常。
  2. 第二次握手,为了让客户端认为服务器端接收和发送能力正常,客户端认为客户端发送和接收能力正常。
  3. 第三次握手,为了让服务器确认自己发送和接受能力正常,同时服务端也知道客户端发送和接收数据正常。

三次握手的具体过程

几个状态

  • SYN表示建立连接
  • FIN表示关闭连接
  • ACK表示响应
  • PSH表示有数据传输
  • RST表示连接重置
  1. 开始客户端处于closed状态,服务端处于listen状态。
  2. 第一次握手:客户端给服务端发一个SYN报文,并指明客户端的初始化序列号ISN?,此时客户端处于SYN_SENT状态。
  3. 第二次握手:服务端收到客户端的SYN报文之后,会以自己的SYN报文作为应答,并且指明自己的ISN,同时会发送客户端ISN+1作为ACK的值,表示自己已经收到客户端的ISN,此时服务器处于SYN_RCVD的状态。
  4. 第三次握手:客户端收到SYN报文之后,会发送一个ACK报文,当然,也是一样把服务器的ISN + 1作为ACK的值,表示已经收到服务端的SYN报文,此时客户端处于established状态。
  5. 服务器收到ACK报文之后,也处于established状态,此时,双方以建立连接。

image-20220320161339199

四次挥手的具体过程

  1. 双方都处于establised状态,客户端发起关闭请求,
  2. 第一次挥手:客户端发送一个FIN报文,报文中会指定一个序列号。此时客户端处于FIN_WAIT1状态。
  3. 第二次挥手:服务器收到FIN之后,会发送ACK报文,且客户端的序列号值+1作为ACK报文的序列号值,表明已经收到客户端的报文了,此时服务端处于CLOSE_WAIT状态。
  4. 第三次挥手:如果服务器也想断开连接了,和客户端的第一次挥手一样,发出FIN报文,且指定一个序列号。此时服务端处于LAST_ACK的状态。
  5. 第四次挥手:客户端收到FIN之后,发送一个ACK报文作为应答,且把服务端的序列号值 + 1作为自己ACK的序列号值,此时客户端处于TIME_WAIT状态。需要过一阵子以确保服务端收到自己的ACK报文之后才会CLOSE状态。
  6. 服务端收到ACK报文之后,就处于关闭连接了,处于CLOSED状态。

image-20220320161312516

7、如果已经建立连接,但是客户端突然出现故障了怎么办?

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

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

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