TCP 传输协议

socket传输图片之TCP协议 后文有介绍socket传输图片,但在此之前,我们应该先具备一些基础的知识。 opencv图片编码和解码 cv2.imencode() cv2.imdecode() 这两个函数是本教程再传输图片会用到的。个人粗浅的理解是放在内存的中的图片是以图像数据的形式存放的,而它们的后缀.jpg或.png决定的是它们在传输过程中的形式以及它们从原来的原始数据被压缩过来的方式。简而言之,,jpg、png(图像格式)是一个中间量,而不是一个状态量。可以理解为jpg通道之类的。 那么我们在用socket传输的时候就必须先把图 阅读详情

TCP 传输协议

 

TCP 连接建立协议

 

名词解释:序号用来标识 从TCP发端向TCP接收端发送的数据字节流,它表示在这个报文段中的第一个数据字节。

 

主要字段解释:

① 32 位序列号:该序列号有自己随机产生 , 用于ACK的确认 ,这个字段一致存在

② 32 位确认序列号:等于上次已成功接收到数据字节序号加1,并且只有ACK标志为1时确认序列号才有效,我们可以看到,在client第一个发送command时,该字段被设为0 , ACK也是 0 

③ U R G 紧急指针(u rgent pointer)有效(见2 0 . 8节)。

④ A C K  确认序号有效。

⑤ P S H 接收方应该尽快将这个报文段交给应用层。

⑥ R S T 重建连接。

⑦ S Y N同步序号用来发起一个连接。这个标志和下一个标志将在第 1 8章介绍。

⑧ F I N 发端完成发送任务。

 

下面看一下三次握手的过程:

Client ----》 Server

 

第一个报文段

此时 Sequence number (32 位序列号) = 1609666383  , 发送方 自己

ACK number = 0

ACK =0

SYN = 1

Serve---》Client

 

第二个报文段

此时:

Sequence Number: 1200338241 ,发送方 自己

Ack Number: 1609666384

ACK : 1

SYN : 1

 

Client--->Server

 

第三个报文段

Sequence Number: 1609666384

Ack Number: 1200338242

Ack : 1

SYN : 0

 

 

下面进行总结:

Client :

Sequence number (32 位序列号) = 1609666383  ----------------》Sequence Number: 1609666384

 

ACK number = 0  ---》Ack Number: 1200338242

 

Server :

Sequence Number: 1200338241 ,发送方 自己

Ack Number: 1609666384

 

 

 

TCP连接终止协议

建立一个连接需要三次握手,而终止一个连接要经过 4次握手。这由T C P的半关闭(h a l f -c l o s e)造成的。既然一个T C P连接是全双工(即数据在两个方向上能同时传递),因此每个方向必须单独地进行关闭。这原则就是当一方完成它的数据发送任务后就能发送一个 F I N来终止这个方向连接。当一端收到一个 F I N,它必须通知应用层另一端几经终止了那个方向的数据传送。发送F I N通常是应用层进行关闭的结果。

收到一个F I N只意味着在这一方向上没有数据流动。一个 T C P连接在收到一个F I N后仍能发送数据。而这对利用半关闭的应用来说是可能的,尽管在实际应用中只有很少的T C P应用程序这样做。正常关闭过程如图1 8 - 3所示。我们将在1 8 . 5节中详细介绍半关闭。

首先进行关闭的一方(即发送第一个 F I N)将执行主动关闭,而另一方(收到这个 F I N)执行被动关闭。通常一方完成主动关闭而另一方完成被动关闭,但我们将在 1 8 . 9节看到双方如何都执行主动关闭。

图1 8 - 3中的报文段4发起终止连接,它由Te l n e t客户端关闭连接时发出。这在我们键入 q u i t命令后发生。它将导致T C P客户端发送一个F I N,用来关闭从客户到服务器的数据传送。

当服务器收到这个 F I N,它发回一个A C K,确认序号为收到的序号加 1(报文段5)。和S Y N一样,一个F I N将占用一个序号。同时T C P服务器还向应用程序(即丢弃服务器)传送一个文件结束符。接着这个服务器程序就关闭它的连接,导致它的 T C P端发送一个F I N(报文段6),客户必须发回一个确认,并将确认序号设置为收到序号加1(报文段7)。图1 8 - 4显示了终止一个连接的典型握手顺序。我们省略了序号。在这个图中,发送F I N将导致应用程序关闭它们的连接,这些F I N的A C K是由T C P软件自动产生的。

连接通常是由客户端发起的,这样第一个 S Y N从客户传到服务器。每一端都能主动关闭这个连接(即首先发送 F I N)。然而,一般由客户端决定何时终止连接,因为客户进程通常由用户交互控制,用户会键入诸如“ q u i t”一样的命令来终止进程。在图 1 8 - 4中,我们能改变上边的标识,将左方定为服务器,右方定为客户,一切仍将像显示的一样工作(例如在1 4 . 4节中的第一个例子中就是由d a y t i m e服务器关闭连接的)。

18.2.5 正常的t c p d u m p输出对所有的数值很大的序号进行排序是很麻烦的,因此默认情况下 t c p d u m p只在显示S Y N报文段时显示完整的序号,而对其后的序号则显示它们与初始序号的相对偏移值(为了得到图1 8 - 1的输出显示必须加上- S选项)。对应于图1 8 - 1的正常t c p d u m p显示如图1 8 - 5所示:除非我们需要显示完整的序号,否则将在以下的例子中使用这种形式的输出显示。

 

下面是抓包情况:

Server ip : 192.168.137.1

Client ip: 192.168.137.128

第一个报文段:

Server ----》Client

 

第二个报文段:

Client---》Server

第三个报文段:

Client---》Server

 

第四个报文段:

Server--》Client

 

 

 TCP的半关闭

T C P提供了连接的一端在结束它的发送后还能接收来自另一端数据的能力。这就是所谓的半关闭。正如我们早些时候提到的只有很少的应用程序使用它。

半关闭一般是由接收方先发送FIN 

传输层协议TCP简介 引言 UDP是一种简单的协议,但是也有着重要的应用,像Client-Server交互等,以及多媒体传输。但是对于大部分的互联网应用,可靠以及有序的传输是必要的。UDP不能提供这种可靠的传输模式,所以另一种协议需要来不足这个空缺,即:TCP。TCP是互联网一种主要的协议。 1. Introduction to TCP TCP(Transmission Control Protocol) 是一种可以在不可靠网络上提供可靠的端对端字节流传输的协议。单个网络与互联网是不一样的,因为不同互联的网络可能有不同的拓扑 阅读详情

相关推荐

riak_pb:Riak协议缓冲区消息

Riak协议缓冲区消息 master : develop : 该存储库包含的基于协议缓冲区的接口的消息定义,以及消息类型的各种Erlang特定的实用程序模块。 它与Riak服务器和客户端分开分发,从而使其可用作受支持消息的独立表示。 此外, .proto描述按功能区域分类: riak.proto包含“全局”消息,例如错误消息和“服务器信息”调用。 riak_kv.proto包含与Riak KV相关的消息。 通过PB接口公开更多功能时,可能会出现其他规格。 协议 Riak PBC协议将请求和响应编码为协议缓冲区消息。 每个请求消息都会产生一个或多个响应消息。 由于消息类型和长度不是由PB编码的,因此它们通过以下方式在网络上发送: <length> <msg> <pbmsg> length是msg_code的长度(1个字节)加上以网络顺序(大端)编码的消息长度

Riak - 使用篇(1)

分布式高可用键值对数据库Riak - 使用篇(1) 请先参考Riak - 安装运维篇(1)安装部署并启动Riak集群(3个Node)。 Riak默认有两种端口,一种是protobuf端口,还有一种是HTTP Restful端口。 以前的Riak client java API会支持两种端口。最新的Riak client Java API作了很多改造,比如说利用netty4作为网络通信框架,...

iteye_20566的博客 817

riakdb:使用协议缓冲区的具有流接口的riak客户端

#riakdb 使用协议缓冲区的具有流接口的Riak客户端 安装 npm install riakdb 例子 使用riakdb很简单。 创建客户端,调用.connect并发出请求。 重要的是要注意riakdb带有两个接口。 一个低级接口,在那里直接映射到Riak协议 专为node.js设计的高级界面 var riakdb = require ( 'riakdb' ) ; var client = riakdb ( { nodes : [ { host : '127.0.0.1' , port : 8087 } ] } ) ; client . connect ( ) ; client . getKeys ( { bucket : 'examples' } ) . on ( 'data' , function ( key ) { console . l

Riak的配置

Riak的配置 riak下载地址  http://s3.amazonaws.com/downloads.basho.com/riak/2.1/2.1.1/ubuntu/trusty/riak_2.1.1-1_amd64.deb riak安装:dpkg -i riak_2.1.1-1_amd64.deb 现在Riak的已被安装,每个节点将需要进行配置。我们将完成每台机器上执行以下步骤。  

liheyu719489316的专栏 1079

OPC UA 协议详解

OPC UA(统一架构)是新一代工业自动化标准通信协议,替代传统OPC Classic,具有跨平台、高安全性、标准化等优势。基于TCP协议,支持全平台部署,采用面向对象架构组织数据,提供实时读写、事件订阅、历史数据访问等功能。作为工业4.0核心协议,适用于智能制造、数字孪生等场景,能实现多品牌设备统一接入。相比Modbus和MQTT,OPC UA协议更规范安全但复杂度较高,是大型工业集群互联的主流选择。

eastyuxiao的专栏 727

记录:N10激光雷达串口编程,将数据存进 SQLite,并进行 ROS2 - cartographer 单雷达建图

N10 系列采用 TOF(time of flight)测距原理,通过测量调制激光的发射、返回时间差来测量物体与传感器的相对距离。激光发射器发出调制脉冲激光,内部定时器开始 从t1时刻计算时间,当激光照射到目标物体后,部分能量返回,当雷达接收到返回的激光信号时,在t2时刻停止内部定时器计时,光速C,激光雷达到达物体的距离D为:经过N10系列激光雷达内嵌的信号处理单元的实时解算得到探测物体的距离值,结合高精度自适应角度测量模块输出的角度信息,可以得到量程内周围 360 度环境 的二维平面信息。

m0_74013893的博客 1096

Riak学习(1):Linux Centos 下安装 Riak 服务

1,介绍 8月底参加了CSND的一个技术沙龙。 http://huiyi.youkuaiyun.com/meeting/info/437/cloud 书生网的cto金友兵,分享了下他们的nosql,他们经过对比分析,选型了多个nosql,最后选择了riak。因为riak比较稳定,扩展,运维方便。 Riak稳定,方便,还是非常不错的。 他们只是分享了些经验,但真正掌握,搭建环境还需要自己来。 r

freewebsys的专栏 7380

宝塔面板全栈部署指南:Node后端+React前端与数据库配置实战

本文提供了一份详尽的宝塔面板全栈部署实战指南,涵盖Node.js后端、React前端与数据库的完整配置流程。文章深入解析了环境准备、数据库创建与导入、Node服务部署、PM2进程守护、React应用构建与托管,以及线上环境变量管理与安全配置等核心步骤,帮助开发者高效、稳定地将项目部署至生产环境。

weixin_29232121的博客 90

传输层协议——TCP协议

1.TCP 是面向连接的运输层协议。应用程序在使用 TCP 协议开展通信前,必须先建立起 TCP 连接。当数据传送完毕后,还需释放已建立的 TCP 连接。2.每一条 TCP 连接仅能拥有两个端点,且每一条 TCP 连接只能是点对点的(一对一)通信模式。3.TCP 提供可靠交付服务,通过 TCP 连接传送的数据,能够实现无差错、不丢失、不重复,并且按照发送顺序到达接收端。4.TCP 支持全双工通信,允许通信双方的应用进程在任意时刻都能发送数据。

2401_83603768的博客 2524

电阻、电容、电感的实际等效模型

1、电阻的等效模型 2、电容的寄生参数 3、电容的等效参数 4、理想铝电解电容与实际铝电解电容的区别 5、电感的等效模型  

鸟宿江边树的博客 4万+

绕线机的制作与研究

本文详细阐述了绕线机的制作过程,涵盖从设计规划到实际制作的各个环节。通过对绕线机工作原理的深入分析,确定了关键技术参数,并依此完成机械结构与控制系统的设计。在制作阶段,运用多种加工工艺完成零件制造与设备组装。经测试,自制绕线机性能达到预期,能够满足特定线圈绕制需求,为相关领域的生产实践与技术研究提供了参考。

道亦无名 1437

传输层协议TCP详解(上篇)

传输层协议TCP详解上集,干货满满!!!

小白成长之路 7123

【电力电子】基于STM32F103C8T6单片机双极性SPWM逆变(硬件篇)

输入电压采集上图为本设计的电源电路,图中 D1 为二极管, 其目的是防止正负极电源反接, 由于二极 管的正向导通特性, 用户反接电源时亦不会烧坏后级电路。图中 R8、R9 组成分压电路, 由单片机 AD 采集 IO 口 P14 采集 AD 值, 并由计算公式电压 =133300(AD/4096)mV;

Naiva的博客 1995

传输层之TCP协议

以上就是传输层之TCP协议的相关知识点,希望对你有所帮助。积跬步以至千里,积怠惰以至深渊。时代在这跟着你一起努力哦!

哥的时代,为你保驾护航 1556

akamai3简单分析

akamai流程的简单分析

记录一些web逆向的过程 918

自私兽群优化器(SHO)详解:从生物本能到智能优化

自私兽群优化器(SHO)是一种受动物群体自私行为启发的智能优化算法。该算法模拟动物在捕食威胁下的两种行为:聚集行为(全局搜索)和自私行为(局部搜索),将优化问题的解空间映射为生存环境,候选解视为猎物个体。SHO通过安全性评估将猎物分为安全、危险和高危三类,分别采用不同的位置更新策略,并引入捕食者角色增加选择压力。相比传统优化算法,SHO具有无需梯度信息、自适应平衡探索与开发、参数简单等优势,特别适合高维复杂和多模态优化问题。算法通过马尔可夫链理论保证收敛性,已在工程设计和数据挖掘等领域展现出良好性能。

qq_42212808的博客 197

传输层协议TCP

TCP(Transmission Control Protocol,传输控制协议)是互联网中最核心的传输层协议之一,与 IP(网际协议)共同构成了 TCP/IP 协议族的基础(通常简称 “TCP/IP”)。它提供了的通信服务,确保数据在网络中准确、有序地传输,是 HTTP、FTP、SMTP 等应用层协议的底层支撑。

2401_86449430的博客 3259

Outlook Express 6 (OE6) for Win7/Win8/Win10

英文版 Outlook Express6.0, 兼容Win7/Win10/WinXP,解压就可用。

传输层协议-TCP协议

TCP协议报文结构和特性

m0_73730252的博客 1869

Camera2Demo

在Camera2 的基础上进行封装,使得Camera2一堆初始化逻辑与Activity分离,降低耦合度,完成预览拍照并保存的操作

OV9734 DATASHEET,完整规格书

OV9734完整规格书,包括电气参数,尺寸规格,寄存器配置表等

传输层TCP协议

传输层TCP协议

Xpccccc的博客 906

TCP,UDP 协议区别及 TCP 协议是如何保证传输可靠的

TCP,UDP 协议区别 UDP: 传送数据前不需要先建立连接,远地主机在收到 UDP 报文后,也不需要给出任何确认。虽然 UDP 不保证可靠的交付,但在某些情况下,UDP 确实是一种高效的通信方式,如:IM、语音、视频、直播等; TCP: 提供面向连接的服务。传送数据之前,必须先建立连接,数据传输结束之后,还要释放连接。 TCP 不提供广播或多播服务。由...

happyJared 1830

TCP协议如何保证可靠传输

本文介绍TCP协议如何保证可靠传输。 本内容也是Java后端面试常见的问题。

IT利刃出鞘的博客 1万+

了解传输层TCP协议

了解传输层TCP协议

2302_76435884的博客 1299

tcp传输协议机制

客户端发送 SYN 报文,携带自己的初始序列号(ISN)。目的是告诉服务器:“我想和你建立连接,我的序列号从 ISN 开始。

2301_80687320的博客 1175
上一篇: TCP洪水攻击
下一篇: 进程控制编程
laohan_
博客等级 码龄15年 112粉丝 224原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值