计算机网络知识点面试总结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.mzph.cn/bicheng/51237.shtml

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

相关文章

基于Gunicorn + Flask + Docker的高并发部署策略

标题:基于Gunicorn Flask Docker的高并发部署策略 引言 随着互联网用户数量的增长,网站和应用程序需要能够处理越来越多的并发请求。Gunicorn 是一个 Python WSGI HTTP 服务器,Flask 是一个轻量级的 Web 应用框架,Docker 是一…

react中如何避免父子组件同时渲染(memo的使用)

1.需求说明 react的渲染机制是父子组件同时渲染,不管子组件是否有变化只要父组件重新渲染了子组件就跟着重新渲染。为了避免不必要的消耗,我们可以使用memo钩子函数 2.使用memo前展示 import { memo,useState } from "react"function Son()…

20240728 每日AI必读资讯

Google Gemini 聊天机器人更新 可以免费使用Gemini 1.5 Flash 1. 引入Gemini 1.5 Flash模型: • 提供更快和更高质量的响应。 • 提升推理和图像理解能力。 • 上下文窗口扩大到 32Ktokens,允许进行更长的对话和处理更复杂的问题。 • 即将支持通过 Goo…

【数据结构】常用数据结构的介绍:理解与应用

文章目录 前言一、介绍二、使用场景三、总结 前言 在计算机科学中,数据结构是我们组织和存储数据的方式,它可以帮助我们高效地执行各种操作,如搜索、插入和删除。从数组和链表,到树和图,不同的数据结构有着不同的优点…

深入理解计算机系统 CSAPP 练习题12.4

我们每次都用read_set初始化ready_set是因为我们每次都处理read_set里的描述符,这是我们希望服务器做的事情.每次一有描述符3或描述符0,select函数会更新ready_set ,我们判断更新后ready_set的情况.然后干对应的事. 由此可以看到select函数的神奇之处,它把一个复杂的事情简单化…

Intel电脑CPU的选择

酷睿 i5/i7/i9 系列至强 Xeon 系列应用场景家用消费级电脑企业服务器工作站PCIe通道数 16X 最多识别到2张显卡,且每张降速为8X 64X 最多支持8张显卡同时使用 内存信道2通道8通道内存容量最大128GB最大6TB工作时长不建议长期不间断连续使用专为365*24不断电使用而设…

Kafka使用案例

1、Kafka 生产者&#xff08;Producer&#xff09;示例 #include <iostream> #include <string> #include <librdkafka/rdkafkacpp.h>class ExampleDeliveryReportCb : public RdKafka::DeliveryReportCb { public:void dr_cb (RdKafka::Message &messa…

centos7安装redis数据库步骤

文章目录 前言步骤1、下载redis并解压到指定路径2、make 和 make install3、配置redis.conf4、制作启动脚本5、授权并启动 前言 我安装了很多次redis&#xff0c;包括redis安装、redis安装、或者使用ansible等自动化构建安装&#xff0c;但是直接用安装包安装还是比较少。 今…

软件测试---网络基础、HTTP

一、网络基础 &#xff08;1&#xff09;Web和网络知识 网络基础TCP/IP 使用HTTP协议访问Web WWW万维网的诞生 WWW万维网的构成 &#xff08;2&#xff09;IP协议 &#xff08;3&#xff09;可靠传输的TCP和三次握手策略 &#xff08;4&#xff09;域名解析服务DNS &#xff0…

【51单片机仿真】基于51单片机设计的广告机系统仿真源码原理图设计文档

效果: 摘要 该系统基于51单片机,通过LED点阵显示字符和简单图案,并实现按键控制。系统可以用于广告机,通过两个按键实现暂停/继续显示和显示方向切换功能。系统包含硬件电路设计和软件编程两部分。 目录 第1章 绪论 第2章 系统分析与总体设计 第3章 系统的硬件结构实现 …

Vue3-拉开序幕的setup

Vue3 中的 setup 是一个新的配置项&#xff0c;值是一个函数。 export default {name: App,setup: function () {} } </script> 和 Vue2 中的 data 一样&#xff0c;我也可以将 setup 简写成为 export default {name: App,setup() {} } setup函数的使用 与 Vue2 不一样…

go 语言踏出第一步

1、下载Go语言安装包&#xff1a;在官方网站&#xff08;https://golang.org/dl/&#xff09;上下载适合你操作系统的Go语言安装包。选择一个tar.gz格式的包。 2、解压安装包&#xff1a;打开终端&#xff0c;进入下载目录&#xff0c;并使用以下命令解压安装包&#xff1a; ta…

Git操作指令(已完结)

Git操作指令 一、安装git 1、设置配置信息&#xff1a; # global全局配置 git config --global user.name "Your username" git config --global user.email "Your email"# 显示颜色 git config --global color.ui true# 配置别名&#xff0c;各种指令都…

详细介绍MLP的原理

什么是MLP MLP&#xff08;Multi-Layer Perceptron&#xff09;&#xff0c;即多层感知机&#xff0c;是一种前馈型人工神经网络。它由一个输入层、一个输出层以及至少一个隐藏层&#xff08;输入层和输出层中间的层&#xff09;组成。每个神经元&#xff08;或称为节点&#x…

【Django】 js实现动态赋值、显示show隐藏hide效果

文章目录 需要达到的前端效果预览&#xff1a;实现步骤复制bootstrp代码&#xff08;buttons&#xff09;复制bootstrp代码&#xff08;Alert警告框&#xff09;写js测试效果 需要达到的前端效果预览&#xff1a; {% load static %} <!DOCTYPE html> <html lang"…

十分钟速通 MySQL —— CRUD

表格的结构 在之前的课程中我们已经学习了关系型数据库的表格&#xff0c;我们再来回顾-下表格由哪些元素构成 表由表名、行、列、列名构成表名是表的名称列名表示列的名字&#xff0c;列名不可以重复表格实质上是一个二维数组&#xff0c;行和列都是从0开始数的(数组的特性) …

线程池配置与CPU利用率

线程数设置理论 CPU密集型&#xff1a;核心数 1I/O密集型&#xff1a;核心数 * 2 CPU利用率基础 单个CPU核心在单位时间内只能执行一个线程的指令。 实验验证 死循环测试&#xff1a;单线程可跑满一个核心利用率。多线程测试&#xff1a;增加线程数&#xff0c;核心利用率…

【软考】广义表

目录 1. 说明2. 基本操作3. 特点4. 存储结构5. 例题5.1 例题1 1. 说明 1.广义表是线性表的推广&#xff0c;是由0个或多个单元素或子表组成的有限序列。2.广义表与线性表的区别在于:线性表的元素都是结构上不可分的单元素&#xff0c;而广义表的元素既可以是单元素&#xff0c…

【过滤器 vs 拦截器】SpringBoot中过滤器与拦截器:明智选择的艺术(如何在项目中做出明智选择)

文章目录 SpringBoot 过滤器 vs 拦截器过滤器 (Filter)定义特点使用场景实现步骤创建过滤器类注册过滤器&#xff08;可选&#xff0c;如果不使用 WebFilter 注解&#xff09; 拦截器 (Interceptor)定义特点使用场景实现步骤创建拦截器类注册拦截器 过滤器与拦截器的比较实际项…

Python教程:一文了解Python中的序列化与反序列化

目录 1. 序列化与反序列化概述 1.1 什么是序列化&#xff1f; 1.2 什么是反序列化&#xff1f; 1.3 应用场景 2. Python中的序列化与反序列化模块 2.1 pickle模块 2.1.1 使用示例 2.2 json模块 2.2.1 使用示例 2.3 yaml模块 2.3.1 使用示例 2.4 marshal模块 3. 实…