计算机网络知识点面试总结4

#来自ウルトラマンゼロ(赛罗)

1 传输层提供的服务

1.1 功能

传输层向它上面的应用层提供通信服务,它属于面向部分的最高层,同时也是用户功能中的最底层。

为运行在不同主机上的进程之间提供了逻辑通信。

传输层的功能:

  • 提供应用进程之间的逻辑通信(即端到端的通信)
  • 复用和分用
    • 复用:应用层所有的应用进程都可以通过传输层再传输到网络层
    • 分用:传输层从网络层收到数据后交付指明的应用进程
  • 对收到的报文进行差错检测
  • 提供两种服务,面向连接 TCP 和 无连接的 UDP

1.2 寻址与端口

端口号只有本地意义,在因特网中不同计算机的相同端口是没有联系的。

端口号:

  • 服务端的使用的端口号
    • 熟知端口号:0 - 1023
    • 登记端口号:1024 - 49151
  • 客户端使用的端口号:仅在客户进程运行时才动态选择的端口号:49152 - 65535

套接字:唯一标识了网络中的一个主机和它上面的一个进程,socket = (主机IP地址,端口号)

1.3 无连接服务与面向连接服务

  • 面向连接:通信双方在通信之前,先建立连接,在通信过程中,会一直监控和管理
  • 无连接:不需要先建立连接

TCP/IP协议族传输协议:

  • 面向连接的传输协议控制协议(TCP):全双工的可靠逻辑信道
  • 无连接的用户数据报协议(UDP):提供一条不可靠的逻辑信道

TCP/IP协议:

  • TCP提供面向连接的可靠传输协议,增加了许多开销,如确认、流量控制、计时器及连接管理
  • TCP适用于可靠的场合,如 FTP、HTTP、TELNET

UDP协议:

  • 在 IP 上提供两个附加服务:多路复用、对数据的错误检查
  • 远程主机收到UDP报文后,不需要给出任何确认、
  • 适用于 :TFTP、DNS、SNMP、RTP

1.4 注意

IP数据报和UDP数据报:

  • IP数据报在网络层要经过路由存储转发
  • UDP数据报的信息对路由不可见,在传输层的端到端的逻辑信道中传输,封装成IP数据报在网络层中传输。

TCP 和 网络层虚电报:

  • TCP报文段在传输层抽象的逻辑信道中传输,对路由不可见。
  • 虚电路所经过的交换结点都必须保存虚电路状态信息,在网络中若采用虚电路方式,则无法提供无连接服务,而传输层采用 TCP 不影响网络层提供无连接服务。

2 UDP 协议

2.1 UDP 数据报

UDP 优点:

  • 无须建立连接
  • 无连接状态
  • 分组首部开销小

特点:

  • 常用于一次性传输较少数据的网络应用,如 DNS、SNMP
  • 尽最大努力交付,不保证可靠交付
  • 面向报文

UDP 的首部格式:

  • 源端口
  • 目的端口
  • 长度
  • 检验和

2.2 UDP 校验

只校验和检查首部和数据部分。

3 TCP 协议

1.1 特点

  • 面向连接(虚连接)的传输层协议
  • 点对点
  • 可靠交付服务、不丢失、不重复
  • 全双工通信
  • 面向字节流

1.2 TCP 报文段

1.3 TCP 连接管理

TCP 连接管理就是使运输连接的建立和释放都能正常进行。

连接阶段:连接建立、数据传送、连接释放

1.3.1 三次握手

客户机 TCP 首先向服务器 TCP 发送一个连接请求报文段(SYN = 1, seq = x)

服务器 TCP 收到连接请求报文段,如同意,发送确认(SYN = 1,ACK = 1,seq = y,ack = x + 1)

客户机收到确认报文段后,向服务器给出确认,(ACK = 1,ack = y + 1,seq = x + 1)

//三次握手
A:有件事不知当讲不当讲B:讲
A:MMP//四次挥手
A:我讲完了B:好,我来讲B:MMP,我讲完了
A:好
1.3.2 四次挥手

客户机向其 TCP 发送一个连接释放报文段,并停止发送数据,主动关闭 TCP 连接(终止位 FIN = 1,seq = u)

服务器收到连接释放报文段后即发出确认,客户到服务器这个方向的连接解决释放了-半关闭(ACK = 1,seq = v,ack = u + 1)

服务器通知客户端 TCP释放连接,主动关闭TCP连接(FIN = 1,ACK = 1,seq = w,ack = v + 1)

客户机收到连接释放报文后,发出确认(ACK = 1,seq = u + 1,ack = w + 1)

1.4 SYN 洪泛攻击

当服务器返回 ACK ,攻击者不确认,一直耗着,占用 CPU 资源。

1.5 可靠传输(实现机制)

  • 序号
  • 确认
  • 重传(超时、冗余 ACK)

1.6 TCP 流量控制

匹配发送方的发送速率与接收方的读取速率

1.6.1 流量控制机制

基于滑动窗口协议。

实现:

  • 限制发送方向网络注入报文的速率,接收方根据自己接收缓存大小,动态调整发送方的发送窗口(接收窗口 rwnd)
  • 发送方根据其到当前网络拥塞程序的估计而确定的窗口值,这称为拥塞窗口 cwmd,其大小与网络的带宽和时延有关

1.7 TCP 拥塞控制

防止过多的数据注入到网络中。

1.7.1 慢开始 拥塞避免

慢开始:每经过一个传输轮次(往返时延RTT),拥塞窗口 cwnd 就会加倍

拥塞避免:发送端窗口 cwnd 每经过一个往返时延 RTT 就会增加一个 MSS 的大小

1.7.2 快重传 快恢复

快重传:当收到连续的三个重复的 ACK,直接重传对方期待的的报文

快恢复:当收到连续的三个冗余 ACK,令 ssthresh = cwnd = cwnd / 2

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/389329.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

【教程】从零开始用QT简易实现modbus通信

前言:本文旨在让读者了解在qt6中实现modbus通信主要使用哪些函数,需要引用哪些库和头文件,不对modbus协议进行介绍,仅在代码层面简单实现一个modbus通信案例 实现效果:点击读取按钮可以读取从机中的十个寄存器&#x…

【QT】鼠标按键事件 - QMouseEvent QKeyEvent

qt 事件 事件1. 事件概念2. 事件的处理3. 按键事件(1)单个按键(2)组合按键 4. 鼠标事件(1)鼠标单击事件(2)鼠标释放事件(3)鼠标双击事件(4&#x…

【数据分析】统计学基础及Python具体实现

各位大佬好 ,这里是阿川的博客,祝您变得更强 个人主页:在线OJ的阿川 大佬的支持和鼓励,将是我成长路上最大的动力 阿川水平有限,如有错误,欢迎大佬指正 Python 初阶 Python–语言基础与由来介绍 Python–…

【Python】已解决:ERROR: Could not install packages due to an OSError: [WinError 5] 拒绝访问。: ‘e:\anaconda\in

文章目录 一、分析问题背景二、可能出错的原因三、错误代码示例四、正确代码示例五、注意事项 已解决:ERROR: Could not install packages due to an OSError: [WinError 5] 拒绝访问。: ‘e:\anaconda\install_root\scripts\pip.exe’ Consider using the --user o…

C语言详解(结构体)

Hi~!这里是奋斗的小羊,很荣幸各位能阅读我的文章,诚请评论指点,欢迎欢迎~~ 💥个人主页:小羊在奋斗 💥所属专栏:C语言 本系列文章为个人学习笔记,在这里撰写成文一…

【MAVEN】如何解决“Error unmarshaling return header; nested exception is: java.io.EOFException“?

目录标题 异常现场分析解决Chat GPT出场一下增大【Build process heap size (Mbytes) 】试试🙏增大【Maven->importing->VM options for importer】试试✅Idea的所有配置说明 异常现场 Error unmarshaling return header; nested exception is: java.io.EOFEx…

C++内存管理(区别C语言)深度对比

欢迎来到我的Blog,点击关注哦💕 前言 前面已经介绍了类和对象,对C面向对象编程已经有了全面认识,接下来要学习对语言学习比较重要的是对内存的管理。 一、内存的分区 代码区:存放程序的机器指令,通常是可…

IntelliJ IDEA安装教程(超详细)

✅作者简介:CSDN内容合伙人、阿里云专家博主、51CTO专家博主、新星计划第三季python赛道Top1🏆 📃个人主页: IDEA的使用 IDEA的简单介绍IDEA的主要优势IDEA的卸载IDEA的安装第一个程序:HelloWorld结束语 IDEA的简单介绍…

JAVA (Springboot) i18n国际化语言配置

JAVA i18n国际化语言配置 一、简介二、功能三、Java配置国际化步骤四、Java国际化配置工具类五、Spring Boot配置六、测试 一、简介 在Java中,国际化(Internationalization,通常简称为i18n)是一个过程,它允许应用程序…

【C语言项目】实现一个通讯录,一步一步详细讲解,小白也能看

目录 设计思路 代码实现 代码改造1 代码改造2 完整代码 代码仓库 设计思路 1. 通讯录存放的信息 这个通讯录保存的信息包括:名字,年龄,性别,电话,住址。 2. 通讯录的功能 1. 通讯录可以存放100个人的信息。 2…

2024年 Java 面试八股文(20w字)

> 🍅我是小宋, 一个只熬夜但不秃头的Java程序员。 > 🍅关注我,带你**过面试,读源码**。提升简历亮点(14个demo) > 🍅我的面试集已有12W 浏览量。 > 🌏号…

[C++] 深度剖析C_C++内存管理机制

文章目录 内存分布内存分布图解 C语言中动态内存管理方式malloc:callocrealloc C内存管理方式内置类型**自定义类型** operator new & operator deleteoperator new & operator delete函数operator newoperator delete **new T[N]** 与**delete[]** **定位new表达式(pl…

【C语言】指针由浅入深全方位详解!!!

目录 指针 野指针 二级指针 指针数组 字符指针 数组指针 数组参数,指针参数 函数指针 函数指针数组 回调函数 练习题 代码仓库 指针 1. 指针定义 1. 指针是内存中一个最小单元的编号,也就是地址。 2. 平时口语中说的指针&#xff…

【C++】如何巧妙运用C++命名空间:初学者必备指南

C语法相关知识点可以通过点击以下链接进行学习一起加油! 本篇将带领大家走进C的旅途,为了更好地学习C这门语言,我们需要了解它的前世今生。在了解完C如何诞生后,将开始我们C之旅第一站"命名空间"。(老早说是C/C博主&…

Java 集合框架:HashMap 的介绍、使用、原理与源码解析

大家好,我是栗筝i,这篇文章是我的 “栗筝i 的 Java 技术栈” 专栏的第 020 篇文章,在 “栗筝i 的 Java 技术栈” 这个专栏中我会持续为大家更新 Java 技术相关全套技术栈内容。专栏的主要目标是已经有一定 Java 开发经验,并希望进…

零基础入门转录组数据分析——GO+KEGG富集分析

零基础入门转录组数据分析——GOKEGG富集分析 目录 零基础入门转录组数据分析——GOKEGG富集分析1. 富集分析基础知识2. GO富集分析(Rstudio)——代码实操3. KEGG富集分析(Rstudio)——代码实操注:配套资源只要改个路径…

PyQt5| 界面设计 |利用Qt Designer实现简单界面交互

目录 1 QtDesigner简单界面设计2 代码部分2.1 ui文件转py文件2.2 界面文件代码2.3 主文件代码2.3.1 主体框架代码2.3.2 实现交互代码 3结果展示 准备工作: 配置好PyQt5相关的库、QtDesigner、pyuic 1 QtDesigner简单界面设计 点击“工具"——>“外部工具&a…

Matlab实现最小二乘法的几种方法

最小二乘法(又称最小平方法)是一种数学优化技术。它通过最小化误差的平方和寻找数据的最佳函数匹配。 按照图中所提出的问题(如图1),要求已知多组解(自变量和因变量),求出最佳和最恰…

【C++/STL深度剖析】priority_queue 最全解析(什么是priority_queue? priority_queue的常用接口有哪些?)

目录 一、前言 二、如何区分【优先级队列】与【队列】? 三、priority_queue的介绍 四、priority_queue 的构造 五、priority_queue 的常用接口 💧push 💧pop 💧size 💧top 💧empty &…

C语言贪吃蛇课程设计实验报告(包含贪吃蛇项目源码)

文末有贪吃蛇代码全览,代码有十分细致的注释!!!文末有贪吃蛇代码全览,代码有十分细致的注释!!!文末有贪吃蛇代码全览,代码有十分细致的注释!!! 码文不易,给个免费的小星星和免费的赞吧,关注也行呀(⑅•͈ᴗ•͈).:*♡ 不要白嫖哇(⁍̥̥̥᷄д⁍̥̥…