TCP/IP(TCP传输控制协议)

2023-11-11

1)基本知识

TCP 协议的作用是保证数据通信的完整性和可靠性,防止丢包。可靠地协议,面向连接的协议

TCP和UDP在传输层

TCP 是以太网协议和 IP 协议的上层协议,也是应用层协议的下层协议。

以太网协议解决了局域网的点对点通信。

IP在网络层,IP 协议可以连接多个局域网。IP 协议定义了一套自己的地址规则,称为 IP 地址。它实现了路由功能,允许某个局域网的 A 主机,向另一个局域网的 B 主机发送消息。IP 协议只是一个地址协议,并不保证数据包的完整。如果路由器丢包(比如缓存满了,新进来的数据包就会丢失),就需要发现丢了哪一个包,以及如何重新发送这个包。这就要依靠 TCP 协议。

TCP/IP不是一个协议,而是一个协议族的统称。

2)运输连接:

1.建立连接:

名词解释:

Seq序号,用来标识从TCP源端向目的端发送的字节流,发起方发送数据时对此进行标记。

ack确认序号用他告诉发送端这个序列号之前的数据段都收到了,比如确认号为X,则表示前X-1个数据段都收到了,只有当ACK=1时,确认号才有效,当ACK=0时,确认号无效,这时会要求重传数据,保证数据的完整性

ACK:确认序号有效

SYN同步序列号,发起一个新连接。SYN置1就表示这是一个连接请求或连接接受报文。

在连接建立时用来同步序号。当SYN=1而ACK=0时,表明这是一个连接请求报文。对方若同意建立连接,则应在响应报文中使SYN=1和ACK=1

FIN:释放一个连接,发送端完成发送任务后,当TCP完成数据传输需要断开时,提出断开连接的一方将这位置1

RST:重置连接。

URG:紧急指针(urgent pointer)有效。 

1)客户端A通过向服务器B发送一个含有同步序列号的标志SYN的数据段给服务器B

2)服务器B收到客户端A的请求后,用一个带有确认应答ACK和同步序列SYN标志的数据段响应客户端A,也告诉客户端A两件事:我已经收到你的请求了,你可以传输数据了;你要用那个序列号作为起始数据段来回应

3)客户端A收到这个数据段后,再发送一个确认应答ACK,确认已经收到主机B的数据段“我已经收到回复,我现在要开始传输实际数据了”

2.数据传送

3.连接释放

1)客户端A完成数据传输后,将控制位FIN置1,提出停止TCP连接的请求

2)当服务器B收到FIN后对其作出响应,确认这一方向上TCP连接关闭,将ACK置1

3)由服务器B再提出反方向的关闭请求,将FIN置1

4)客户端A对服务器B的请求进行确认,将ACK置1,双方向的关闭结束

连接建立的作用:

1要使每一方能够确知对方的存在。

2要允许双方协商一些参数(如最大报文段长度,最大窗口大小,服务质量等)。

3能够对运输实体资源(如缓存大小等)进行分配。

为什么不能用两次握手进行连接?

三次握手的目的是“为了防止已经失效的连接请求报文段突然又传到服务端,因而产生错误”。

为了保证服务端能收接受到客户端的信息并能做出正确的应答而进行前两次(第一次和第二次)握手,为了保证客户端能够接收到服务端的信息并能做出正确的应答而进行后两次(第二次和第三次)握手。

假如是两次握手,客户端给服务器发送一个请求,服务器接收请求建立连接完成,可是因为阻塞所以客户端第一次消息没有发完,当第二个消息发送过去的时候,服务器会等待客户端发送建立连接的请求,可是客户端会认为这是第一个的消息,所以不会在建立连接,那么客户端就会一直一直等下去。造成服务器的等待和资源的浪费。

为什么要四次挥手

TCP是全双工模式每个方向都需要一个FIN和ACK,当一端发送了FIN包之后,处于半关闭状态,此时仍然可以接收数据包。 

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

TCP/IP(TCP传输控制协议) 的相关文章

  • android:基于Apache的HttpClient简单使用方法

    1 HttpClient HttpClient 是Apache Jakarta Common 下的子项目 在android中已经集成了Apache的HttpClient模块 用来提供高效的 最新的 功能丰富的支持 HTTP 协议的客户端编程
  • eclipse相关快捷键

    eclipse快捷键 查找 类查找 ctrl shift h 全局查找 ctrl h 在一个页面中查找 ctrl f 查看继承关系 ctrl t 查找 类查找 ctrl shift h 全局查找 ctrl h 在一个页面中查找 ctrl f
  • mysql查询第三个字母是a的员工_mysql基础(三)——多表查询

    创建表 CREATE TABLEDEPT DEPTNOint 2 PRIMARY KEY DNAMEVARCHAR 14 LOCVARCHAR 13 INSERT INTO DEPT VALUES 10 ACCOUNTING NEW YOR
  • ChatGPT来了,英语不能丢,但我不想上班

    文 谷雨 微信公众号 王不留 好久没写文 可能大伙已把我忘了 春节之后 状态一直不太好 我在2月1号时从老家直接来到了深圳出差 而后以996的工作状态疲于应付工作中的各种问题 终于这周末休息了两天 没有加班 周六睡了一天 周日 2 19号
  • 机器学习----感知器

    1 深度学习 人工智能领域 有一个方法叫机器学习 在机器学习这个方法里 有一类算法叫神经网络 神经网络如下图所示 1 一个圆圈就是一个神经元 神经元就是感知器 2 输入层 隐藏层 输出层 构成神经网络 而隐藏层大于2的神经网络 就是深度神经
  • BDA初级分析——先导课

    思考题 假设你是三只松鼠营销团队的一员 美团or抖音 你会如何选择 一 什么是数据分析 数据分析是根据业务问题 对数据进行收集 清洗 处理和建模的过程 用于识别有助于业务的信息 获取关键业务结论并辅助决策制定 业务问题 选择美团还是抖音作为
  • Doris的查询计划

    本文章向大家介绍Doris的查询计划 主要内容包括1 查询计划 2 MySQL查询计划 2 Doris的查询计划 2 聚合 3 关联查询 4 查询 Profile 基本概念 基础应用 原理机制和需要注意的事项等 并结合实例形式分析了其使用技
  • 一步一步在docker中构建CI流程

    docker是什么 引用百度百科的介绍 Docker 是一个开源的应用容器引擎 让开发者可以打包他们的应用以及依赖包到一个可移植的容器中 然后发布到任何流行的 Linux 机器上 也可以实现虚拟化 容器是完全使用沙箱机制 相互之间不会有任何
  • python web开发之WSGI/uwsgi/uWSGI详解

    1 三者的定义 WSGI是一种通信协议 uwsgi是一种传输协议 uWSGI是实现了uwsgi和WSGI两种协议的Web服务器 2 三者的使用场景 WSGI 全称 Web Server Gateway Interface 是为 Python
  • jvm内存使用率linux,linux 查看Java内存使用情况

    linux 查看Java内存使用情况 命令如下 top b n 1 grep java awk print PID 1 mem 6 CPU percent 9 mem percent 10 查看java进程信息 ps ef grep jav
  • shardingsphere搭建使用,以及报错解决(一)

    ShradingJdbc的搭建注意事項 目前使用的Springboot的版本是 2 2 5 使用的shardingsphere的版本是 5 1 0 1 注意ShangrdingSphere的版本之间差异比较大 如果有问题的话尝试使用不同的版
  • double和float的精度和取值范围

    1 取值范围 float和double的范围是由指数的位数来决定的 float的指数位有8位 而double的指数位有11位 分布如下 float 1bit 符号位 8bits 指数位 23bits 尾数位 double 1bit 符号位
  • 第5课 微信小程序常用尺寸单位rpx说明:

    第5课 微信小程序尺寸单位rpx说明 rpx单位 width 750rpx 定义所有手机屏幕宽度都为750rpx px单位 height 750px px单位最好只用于高度 如果定义宽度 手机屏幕不同显示效果也会不同 vw单位 width
  • free java movies_Java Programming: Build a Recommendation System

    Ever wonder how Netflix decides what movies to recommend for you Or how Amazon recommends books We can get a feel for ho
  • 按课程总成绩从高到低排序输出各个学生的信息

    按课程总成绩从高到低排序输出各个学生的信息 20分 题目内容 设计一个结构体类型 包含姓名 学号 语文成绩 数学成绩 英语成绩 输入n个学生的信息 输出按三门课程总成绩从高到低排序的各个学生的姓名 学号和各科成绩 输入格式 首先第1行输入一
  • 数学建模——Matlab画散点图

    scatter x linspace 0 3 pi 200 y cos x rand 1 200 scatter x y plot x linspace 0 3 pi 200 y cos x rand 1 200 plot x y o
  • 树莓派Debian安装Node.js,centOS服务器安装简介

    树莓派的架构 uname a 树莓派4B是基于armv7架构 下载 wget https nodejs org dist v12 16 1 node v12 16 1 linux armv7l tar xz tar xf node v12
  • okhttp之 header详解

    Http 的请求 和 应答包括 header部分 和body部分 以下对header部分进行详解 仅供参考 Request的header注释 Header 注释 示例 Accept 指定客户端能够接收的内容类型 Accept text pl
  • 【6】Docker中部署Nginx

    1 拉取 Nginx 镜像 docker pull nginx latest 就是最新版本的 nginx 版本 2 创建 守护方式的 Nginx 容器 docker run di name nginx p 80 80 nginx 在第5篇
  • Typora设置标题自动添加序号

    Typora设置标题自动添加序号 文件 偏好设置 打开主题文件夹 设置css样式 创建文件base user css initialize css counter write counter reset h1 h1 counter rese

随机推荐

  • HW溯源反制

    windows 跳板服务器溯源 windows security日志 rdp 日志 里面能够拿到security或者rdp日志的ip信息 假如对方跳板是win 的话 顺藤摸瓜可以拿到对方真实连跳板的ip 然后需要注意的是 假如对方用的是随机
  • Tomcat优化集群

    1 分配给Tomcat足够大的内存空间 压解版本中 文件位置 bin catalina bat 这里增加了 set JAVA OPTS Xms1024m Xmx1024m XX PermSize 128M XX MaxPermSize 25
  • 2023通信工程专业毕业设计题目选题推荐

    文章目录 1前言 2 如何选题 2 1 移动通信方向 2 2 嵌入式开发方向 2 3 人工智能方向 2 4 物联网方向 2 5 算法研究方向 2 6 移动应用开发方向 2 7 网络通信方向 2 8 学长作品展示 4 最后 1前言 近期不少学
  • 技术至简-2:分集与交织

    分集 先开分后集合 空间 把数据分到不同的空间进行传输 频率 把数据分到不同的载频进行传输 时间 把数据分到不同的时隙进行传输 交织 分与合数据的方法 按比特的位置连续 分组 按比特的位置间隔 交织
  • Java常用包9

    下面列出了Java常用包 可以查找该包下面的常用类 可以查看该类的常用方法使用源码 模块 项目数 1 rx functions 有 21 个常用类 2 org springframework beans factory config 有 3
  • 20060217: 联合国的人权报告毫无根据?

    那你美国的人权报告就有根据了 环球时报 引用的不是 中韩观点 而是事实 转载于 https www cnblogs com yidinghe archive 2006 02 17 332220 html
  • 前端 h5实现自带浏览器支付功能

    前端需要做的 这里使用vue 中的 mixin 第一步获取订单号 调用后端的接口获取订单号 第二步 调用后端的接口 后端给返回一个url地址 然后打开这个地址 这个地址是调用微信支付的地址 打开即调用 这里使用decodeURICompon
  • Nginx配置origin限制跨域请求

    Nginx需要修复一个安全漏洞 这个需要根据客户端传递的请求头中的Origin值 进行安全的跨站策略配置 目的是对非法的origin直接返回403错误页面 配置如下 1 在http中定义一个通过map指令 定义跨域规则并返回是否合法 htt
  • SQL中的替换函数replace()使用

    语法REPLACE string expression string pattern string replacement 参数string expression 要搜索的字符串表达式 string expression 可以是字符或二进制
  • 【大数据分析与挖掘】挖掘建模之关联分析

    文章目录 一 关联规则 1 1 常用的关联规则算法 1 2 Apriori算法介绍 1 2 1 关联规则与频繁项集 1 2 2 Apriori算法的思想与性质 1 2 3 Apriori算法的实现的两个过程 1 2 4 Apriori算法的
  • PicGo+阿里云Oss图床

    首先说一下我为什么使用阿里云 我之前是用gitee做图床 后面被限制了 图片也访问不了 阿里云这个5块钱可以用半年 还是很便宜的 主要不会突然见不能用 文章目录 PicGo下载 阿里云Oss图床的配置 PicGo下载 PicGo2 3 0
  • Linux:查看进程+杀死进程

    查看进程 ps 查看所有进程状态 ps aux 参数 a 显示所有进程 包括其他用户的进程 u 用户以及其他详细信息 x 显示没有控制终端的进程 查看本用户的进程及其状态 ps u 状态 1 R 运行 表示进程正在运行或在允许队列中等待 2
  • Leetcode 704 二分查找

    Leetcode 704 二分查找 题目描述 给定一个 n 个元素有序的 升序 整型数组 nums 和一个目标值 target 写一个函数搜索 nums 中的 target 如果目标值存在返回下标 否则返回 1 示例1 输入 nums 1
  • Pr零基础入门指南笔记二-----------(粗剪、精剪、导出视频)

    目录 1 粗 精剪辑步骤 2 粗剪详细步骤 1 预览和挑选素材 2 调整素材顺序 3 精确修建素材 4 添加背景音乐 3 导出视频 干货 PR零基础入门指南第三集 10分钟学会PR基本剪辑 剪辑步骤 快捷操作大分享 哔哩哔哩 bilibil
  • 版本发布规范

    版本发布命名规范 版本命名规范 软件版本号有四部分组成 第一部分为主版本号 第二部分为次版本号 第三部分为修订版本号 第四部分为日期版本号加希腊字母版本号 希腊字母版本号共有五种 分别为base alpha beta RC release
  • Unity Shader初学——《Unity Shader入门摘要》

    由于项目需要加上本人兴趣 所以开始学习shader相关知识 主要参考冯乐乐的 Unity Shader入门摘要 作者的博客在此 https blog csdn net candycat1992 作者的个人网站 http candycat19
  • 【论文笔记】ICNet:用于无监督医学图像配准的逆一致性模型

    本文是文章 Inverse Consistent Deep Networks for Unsupervised Deformable Image Registration 的阅读笔记 过去基于学习的配准方法忽略了图像之间转换的逆一致性 并且
  • 计算机系统实验六:程序的链接

    参考教材 计算机系统基础 第二版 袁春风 机械工业出版社 参考慕课 计算机系统基础 四 编程与调试实践 https www icourse163 org learn NJU 1449521162 计算机系统实验导航 实验一 环境安装 htt
  • 2 ELK收集nginx的json格式日志

    为了便于利用 ELK日志平台收集展示 Nginx 的日志 可以将 Nginx 的日志改成 json 的格式 https www jianshu com p b6ba259777e7 1 修改nginx配置文件 root db01 vim e
  • TCP/IP(TCP传输控制协议)

    1 基本知识 TCP 协议的作用是 保证数据通信的完整性和可靠性 防止丢包 可靠地协议 面向连接的协议 TCP和UDP在传输层 TCP 是以太网协议和 IP 协议的上层协议 也是应用层协议的下层协议 以太网协议解决了局域网的点对点通信 IP