当前位置: 首页 > news >正文

网络工程师学习笔记——网络互连与互联网(三)

TCP三次握手

建立TCP连接是通过三次握手实现的,采用三报文握手主要是为了防止已失效的连接请求报文突然又传送到了,因而产生错误

主动发起TCP连接建立的称为客户端

被动等待的为TCP服务器,二者之间需要交换三个TCP报文段

  • 首先是客户端主动发起TCP连接,发送一个TCP报文段,其中的SYN被置为1,一个seq=x序列号,此时客户端进入SYN_SEND状态

  • 然后服务端收到tcp报文,如果同意建立连接,则回复一个tcp报文,其中SYN和ACK标志位都为1,序列号seq=y,确认字段ack=x+1,这是对tcp客户进程所选择的序列号seq的确认,此时服务端进入SYN_RECV

  • 客户端收到服务端tcp的确认报文后,还要向服务端发送一个普通的tcp,用于确认报文段并已进入建立状态,报文中的ACK为1序列号seq=x+1确认号ack=y+1,服务端收到报文后双方都进入 ESTABLISHED状态

注意:

<1>第一个报文不携带数据,因为规定SYN为1的报文不可以携带数据,但是要消耗一个序列号

<2>最后一个报文可以携带数据,不携带数据不消耗序列号,下一个序列号任然为x+1

被动建立的一方是LISTEN状态

TCP四次挥手

在断开连接前,双方都处于ESTABLISHED,双方都可以主动的断开连接

由于TCP连接是全双工的,因此每个方向都需要单独的断开

  • 客户端打算断开连接,想服务端发送一个报文段,其中FIN为1,且发送一个序列号seq=u,之后客户端进入FIN_WAIT_1状态,等待服务端确认

  • 服务端收到断开连接报文后,想客户端发送一个应答报文ACK为1,确认号ack=u+1,序列号seq=y,然后服务端进入CLOSE_WAIT状态,进入等待关闭状态,处于半关闭状态(可以接数据或者发送数据,表明还有一种可以再正常工作)

  • 服务器也打算断开连接,会向客户端发送断开连接报文,其中FIN为1,ACK为1,序列号seq=x,确认号ack=u+1,此时服务器进入LAST_ACK 状态

  • 客户端收到来自服务端的断开连接报文后,向服务端发送ACK应答报文段以及断开连接报文段的确认号ack=x+1,之后客户端进入TIME_WAIT 状态,服务器收到ACK应答报文后,服务器进入CLOSE状态,此时客户端还处于TIME_WAIT状态,此时的tcp连接还未释放,等待2ms后,客户端才进入CLOSE状态

二者之间的存在,保证了数据的可靠传输

拥塞控制和流量控制

拥塞控制(在AB节点之间的所有网络节点之间进行控制)

TCP滑动窗口机制

win=3代表某一方可以发送的数据

窗口大小决定了在收到确认前可以发送的数据量

流量控制(在A、B两个节点之间进行控制)

流量控制:是为了防止发送速度过快,接收方处理不过来,造成丢包现象,导致网络资源浪费

UDP(用户数据报协议)

特点:

  • 不可靠传输

  • 面向无连接

  • 尽力而为的传输

应用:DNS,视频应用

相比于TCP,UDP的报文开销减少很多,只是有简单的端口寻址功能

端口号:应用程序之间进行通信时的

源端口:随机分配的,一般 >1024 目的端口:具体到常用的端口号(如telnet 23 、DNS 53等)

常见的端口及协议分布层

  • 物理层和数据链路层

    • 802.3 以太网

    • 802 局域网

    • 802.11 WIFI

  • 网络层

    • ICMP 控制报文协议 端口号:1

    • IGMP Internet组管理协议 2

    • ESP 安全封装协议 50

    • AH 认证头协议 51

    • EIGRP 增强IGRP路由协议 88

    • OSPF 开放式最短路径优先 89

    • ISIS 中间系统到中间系统 124

    • VRRP 虚拟路由冗余协议

  • 传输层(TCP,UDP)

  • 应用层(分为TCP层面,UDP层面)

TCP层面的协议(常用的)

UDP层面的协议(常用的)
邮件三剑客:
  • SMTP 25

  • POP3 110

  • IMAP 143

汇总:

相关文章:

网络工程师学习笔记——网络互连与互联网(三)

TCP三次握手 建立TCP连接是通过三次握手实现的&#xff0c;采用三报文握手主要是为了防止已失效的连接请求报文突然又传送到了&#xff0c;因而产生错误 主动发起TCP连接建立的称为客户端 被动等待的为TCP服务器&#xff0c;二者之间需要交换三个TCP报文段 首先是客户端主动…...

【Tomcat】常见面试题整理 共34题

文章目录 1. 简述什么是Tomcat&#xff1f;2. Tomcat的缺省端口是多少&#xff0c;怎么修改&#xff1f;3. 简述Tomcat 目录结构及作用4. 简述Tomcat有几种部署方式&#xff1f;5. 简述Tomcat容器是如何创建servlet类实例&#xff1f;6. Tomcat有哪几种Connector运行模式&#…...

到时间没回家又不接电话?如何迅速确定孩子的位置?

当孩子未按时回家且无法通过电话联系时&#xff0c;家长往往会感到焦虑。此时&#xff0c;如何迅速确定孩子的位置成为许多家长迫切需要解决的问题。 利用智能手机定位技术是最常见的方法之一。大多数智能手机都内置GPS定位功能&#xff0c;通过“查找设备”应用&#xff0c;家…...

接口自动化--commons内容详解-02

上篇文章主要讲解了接口自动化主要架构框架&#xff0c;这篇文庄主要讲解commons中的内容 1. requests_utils.py 首先讲解这个工具类&#xff0c;主要是因为在接口自动化中&#xff0c;基本都有的接口都是发送请求&#xff0c;获取响应结果&#xff0c;唯一不同的是&#xff0…...

WanFangAi论文写作研究生论文写作神器在线生成真实数据,标注参考文献位置,表格公式代码流程图查重20以内,研究生论文写作技巧

WanFangAi是一个专业的学术论文辅助平台&#xff0c;它提供了一系列工具来帮助用户提升论文写作的效率和质量。以下是WanFangAi的一些核心功能:1.主题探索与文献搜索:用户可以输入关键词和研究领域&#xff0c;WanFangAi会迅速推荐合适的论文主题并提供相关的文献搜索服务。系统…...

cv2.waitkey(30) 按键盘无效

cv2.imshow("detection", color_image) # 窗口显示&#xff0c;显示名为 Capture_Videok cv2.waitKey(100) & 0xFF # 每帧数据延时 1ms&#xff0c;延时不能为 0&#xff0c;否则读取的结果会是静态帧 if k ord(s): # 键盘按一下s, 保存当前照片和机械臂位姿…...

【洛谷】P10417 [蓝桥杯 2023 国 A] 第 K 小的和 的题解

【洛谷】P10417 [蓝桥杯 2023 国 A] 第 K 小的和 的题解 题目传送门 题解 CSP-S1 补全程序&#xff0c;致敬全 A 的答案&#xff0c;和神奇的预言家。 写一下这篇的题解说不定能加 CSP 2024 的 RP 首先看到 k k k 这么大的一个常数&#xff0c;就想到了二分。然后写一个判…...

Ubuntu24.04 安装ssh开启22端口及允许root用户远程登录

1、安装openssh-server插件开启22端口访问 # 安装ssh会默认启动服务并开启22端口 apt update apt install openssh-server 2、开启root用户远程访问 激活root用户&#xff0c;设置root用户登录密码 hunterlocalhost:/$ sudo passwd root New password: Retype new password…...

STM32基础学习笔记-DHT11单总线协议面试基础题7

第七章、DHT11: 单总线协!议 常见问题 1、DHT11是什么 &#xff1f;有什么特性 &#xff1f; 2、单总线协议是什么 &#xff1f;原理 &#xff1f;DHT11的单总线协议的组成 &#xff1f; ## 1、DHT11定义 单总线协议是一种用于在多个设备之间进行通信的协议&#xff0c;所有…...

Redisson分布式锁的概念和使用

Redisson分布式锁的概念和使用 一 简介1.1 什么是分布式锁&#xff1f;1.2 Redisson分布式锁的原理1.3 Redisson分布式锁的优势1.4 Redisson分布式锁的应用场景 二 案例2.1 锁竞争案例2.2 看门狗案例2.3 参考文章 前言 这是我在这个网站整理的笔记,有错误的地方请指出&#xff…...

uniapp小程序持续获取用户位置信息,后台位置获取

做一个小程序持续获取用户位置信息的功能&#xff0c;即使小程序切换到后台也能继续获取&#xff0c;getLocation这个api只有小程序在前台才能获取位置&#xff0c;所以不用这个 先申请一个腾讯地图key 在uniapp项目配置源码视图里加上这个代码 先获取权限&#xff0c;再开启…...

优化算法(五)—梯度下降算法(附MATLAB程序)

梯度下降算法&#xff08;Gradient Descent&#xff09;是一种常用的优化算法&#xff0c;用于寻找函数的局部最小值。它通过沿着函数梯度的反方向迭代地调整变量&#xff0c;以逐步找到最优解。梯度下降广泛应用于机器学习和深度学习中&#xff0c;特别是在训练模型时优化损失…...

TypeScript 设计模式之【单例模式】

文章目录 **单例模式**: 独一无二的特工我们为什么需要这样的特工?单例模式的秘密&#xff1a;如何培养这样的特工?特工的利与害代码实现单例模式的主要优点单例模式的主要缺点单例模式的适用场景总结 单例模式: 独一无二的特工 单例模式就像是一个秘密组织里的特殊特工。这…...

UDP与TCP那个传输更快

UDP&#xff08;用户数据报协议&#xff09;和 TCP&#xff08;传输控制协议&#xff09;是互联网协议栈中常用的两种传输层协议。它们在设计和应用上存在一些显著的差异&#xff0c;导致在传输速度和可靠性等方面表现不同。以下是它们之间的比较&#xff0c;特别是关于传输速度…...

如何把PDF样本册转换为网址链接

​随着互联网的普及&#xff0c;将纸质或PDF格式的样本册转化为网址链接&#xff0c;以便于在线浏览和分享&#xff0c;变得越来越重要。本文将为您详细讲解如何将PDF样本册转换为网址链接&#xff0c;让您轻松实现线上展示和分享。 一、了解PDF样本册与网址链接 1. PDF样本册…...

centos7 semanage 离线安装 SELinux

centos7 semanage 离线安装 还是参考一下 换成阿里云的源 之后 &#xff0c;在线更新不&#xff0c;不要用离线安装 centos7 更新 yum源 为 阿里云 LTS https://blog.csdn.net/wowocpp/article/details/142517908 CentOS7安装时使用"基础服务器"选项安装, 后发现没…...

磨具生产制造9人共用一台工作站

随着技术的不断进步与工业自动化的深入发展&#xff0c;如何优化生产流程、提高设备利用率成为了众多企业面临的重大课题。那么在磨具生产制造中实现9人共用一台工作站呢&#xff1f; 一、背景与挑战 在磨具制造行业&#xff0c;高精度、高效率的生产要求与复杂多变的工艺流程…...

Qt clicked()、clicked(bool)、toggled(bool)信号的区别和联系

clicked() 信号 所属控件&#xff1a;clicked()信号是QAbstractButton类&#xff08;及其子类&#xff0c;如QPushButton、QRadioButton、QCheckBox等&#xff09;的一个信号。clicked信号可以说是许多控件&#xff08;特别是按钮类控件&#xff0c;如QPushButton&#xff09;…...

nginx实现负载均衡的分发策略

文章目录 分发策略 分发策略 轮询策略 轮询策略是最简单的负载均衡策略之一。Nginx 默认采用轮询方式将请求分发到不同的后端服务器。它将请求按照顺序轮流分配给每个后端服务器&#xff0c;不论服务器当前的负载情况如何。这种策略适合后端服务器性能相近且无太大差异的场景。…...

【Python】用代码片段掌握Python核心功能

探索各种用户输入值 Python 是一种多才多艺的编程语言&#xff0c;广泛应用于从 Web 开发到数据分析的各种场景。这篇文章将通过实际的代码片段带你了解 Python 中的几个基本概念和操作。无论你是初学者还是想重温一下知识点&#xff0c;这些例子都会给你带来宝贵的见解。 输…...

JVM 内存模型

JVM 内存模型 对于 Java 程序员来说,在虚拟机自动内存管理机制下,不再需要像 C/C程序开发程序员这样为每一个 new 操作去写对应的 delete/free 操作,不容易出现内存泄漏和内存溢出问题。正是因为 Java程序把内存控制权利交给 JVM 虚拟机。一旦出现内存泄漏和溢出方面的问题,如果…...

Linux2.6* 内核默认支持的文件系统

Linux2.6* 内核默认支持的文件系统 Btrfs是一种具有先进特性的写时复制文件系统。支持多种高级功能&#xff0c;如快照、透明压缩、数据校验和自我修复等&#xff0c;适用于大规模存储系统和数据可靠性要求较高的场景。JFSJournaled File System日志文件系统&#xff0c;具有高…...

PMP--二模--解题--111-120

文章目录 7.成本管理111、 [单选] 你向项目出资人提供了项目的成本估算&#xff0c;他对估算不满意&#xff0c;因为他认为价格太高了。他要你削减项目估算的15%&#xff0c;你该怎么做&#xff1f; 8.质量管理112、 [单选] 在新建水处理厂的建设过程中&#xff0c;政府对处理厂…...

idea 创建多模块项目

一、新建项目&#xff0c;创建父工程 新建项目&#xff0c;选择 spring initializr 填写相关信息后提交 删除不相关的目录&#xff0c;如下 修改打包方式为 pom&#xff0c;在 pom.xml 文件中新增一行&#xff0c;如下 二、创建子模块 新增子模块 三、修改 pom 文件 修…...

redis Redis-Cluster常用命令与Redis性能监控

起因&#xff1a;随着项目的进一步推广&#xff0c;数据量的增大&#xff0c;直接访问mysql数据库获取数据所使用的时间越来越长&#xff0c;为解决当前主要矛盾&#xff0c;决定引入redis非关系型数据库作为缓存层&#xff0c;使得数据并不能直接命中数据库&#xff0c;减少访…...

《C++中的随机数生成器:探索随机之美》

在 C编程的世界里&#xff0c;随机数生成器是一个非常重要的工具&#xff0c;它在众多领域都有着广泛的应用&#xff0c;从游戏开发中的随机事件触发&#xff0c;到模拟实验中的随机数据生成&#xff0c;再到密码学中的安全随机数需求&#xff0c;随机数生成器都扮演着关键的角…...

为什么推荐使用英文版LabVIEW

在LabVIEW开发中&#xff0c;中文版和英文版主要在界面语言、功能习惯以及社区支持等方面存在差异。以下是两者的特点以及推荐使用英文版的原因&#xff1a; 中文版特点&#xff1a; 界面和帮助文档为中文&#xff1a;对于中文母语开发者来说&#xff0c;中文版LabVIEW的界面和…...

【Moveit2】move_group_interface_tutorial中文注释

move_group_interface_tutorial #include <moveit/move_group_interface/move_group_interface.h> // 包含MoveIt的移动组接口 #include <moveit/planning_scene_interface/planning_scene_interface.h> // 包含规划场景接口#include <moveit_msgs/msg/display…...

JavaScript window的open和close用法

在JavaScript中&#xff0c;window.open() 和 window.close() 方法分别用于打开和关闭浏览器窗口或标签页。以下是这两个方法的基本用法&#xff1a; window.open() window.open() 方法可以接受四个参数&#xff1a; ‌URL‌&#xff1a;要打开的网页的地址。如果省略这个参…...

经典sql题(十四)炸裂函数的恢复

下面是一个关于 SELECT 语句的例子&#xff0c;该示例展示了如何使用 CONCAT_WS 和 COLLECT_LIST 函数来处理炸裂之后学生成绩的数据。假设我们有一个名为 test 的表&#xff0c;结构如下&#xff1a; 表结构 test student_idstudent_nameclassscore1AliceClass1901AliceClas…...