首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

网络编程懒人入门(三):快速理解TCP协议一篇就够1、前言2、系列文章3、参考资料4、TCP 协议的作用5、TCP 数据包大小6、TCP 数据包的编号(SEQ)7、TCP 数据包的组装8、慢启动

简单说,TCP 协议的作用是,保证数据通信的完整性和可靠性,防止丢包。 5、TCP 数据包大小 以太网数据包(packet)的大小是固定的,最初是1518字节,后来增加到1522字节。...TCP 并没有提供任何机制,表示原始文件的大小,这由应用层的协议来规定。比如,HTTP 协议就有一个头信息Content-Length,表示信息体的大小。...Linux 内核里面设定了(常量TCP_INIT_CWND),刚开始通信的时候,发送方一次性发送10个数据包,即"发送窗口"的大小为10。然后停下来,等待接收方的确认,再继续发送。...▲ 每个 ACK 都带有下一个数据包的编号,以及接收窗口的剩余容量,双方都会发送 ACK 注意:由于 TCP 通信是双向的,所以双方都需要发送 ACK。两方的窗口大小,很可能是不一样的。...《Java新一代网络编程模型AIO原理及Linux系统AIO介绍》 《NIO框架入门(一):服务端基于Netty4的UDP双向通信Demo演示》 《NIO框架入门(二):服务端基于MINA2的UDP

91930
  • 您找到你想要的搜索结果了吗?
    是的
    没有找到

    kubernetes 的TCP 数据包可视化

    kubernetes 的TCP 数据包可视化介绍k8spacket是用 Golang 编写的工具,它使用gopacket第三方库来嗅探工作负载(传入和传出)上的 TCP 数据包。...它在运行的容器网络接口上创建 TCP 侦听器。当 Kubernetes 创建一个新容器时,CNI 插件负责提供与其他容器进行通信的可能性。...最常见的方法是用linux namespace隔离网络并用veth pair连接隔离的 namespace 与网桥。...k8spacket有助于了解 Kubernetes 集群中的 TCP 数据包流量:显示集群中工作负载之间的流量通知流量在集群外路由到哪里显示有关连接关闭套接字的信息显示工作负载发送/接收的字节数计算建立连接的时间显示整个集群中工作负载之间的网络连接拓扑...k8spacket 收集 TCP 流、处理数据,使用 Node Graph API Grafana 数据源插件(详情请查看 Node Graph API 插件),通过 API 展示在Grafana面板。

    1.3K11

    速读原著-TCPIP(TCP窗口大小)

    第20章 TCP的成块数据流 20.4 窗口大小 由接收方提供的窗口的大小通常可以由接收进程控制,这将影响 T C P的性能。...其他的系统,如Solaris 2.2、4 . 4 B S D和AIX3.2则使用更大的默认缓存大小,如8192或16384等。 插口A P I允许进程设置发送和接收缓存的大小。...接收缓存的大小是该连接上所能够通告的最大窗口大小。有一些应用程序通过修改插口缓存大小来增加性能。...[Mogul 1993]显示了在改变发送和接收缓存大小(在单向数据流的应用中,如文件传输,只需改变发送方的发送缓存和接收方的接收缓存大小)的情况下,位于以太网上的两个工作站之间进行文件传输时的一些结果。...在2 0 . 7节中,我们将看到在给定通信媒体带宽和两端往返时间的情况下,如何计算最小的缓存大小。 一个例子 可以使用s o c k程序来控制这些缓存的大小

    1.7K20

    速读原著-TCPIP(TCP窗口大小通告)

    第19章 TCP的交互数据流 19.5 窗口大小通告 在图1 9 - 4中,我们可以观察到s l i p通告窗口大小为4 0 9 6字节,而v a n g o g h通告其窗口大小为8 1 9 2个字节...然而,报文段5通告的窗口大小为 4 0 9 5个字节,这意味着在 T C P的缓冲区中仍然有一个字节等待应用程序( R l o g i n客户)读取。...同样,来自客户的下一个报文段声明其窗口大小为4 0 9 4个字节,这说明仍有两个字节等待读取。...服务器通常通告窗口大小为 8 1 9 2个字节,这是因为服务器在读取并回显接收到的数据之前,其T C P没有数据发送。当服务器已经读取了来自客户的输入后,来自服务器的数据将被发送。...当客户 T C P发送缓存的数据时,R l o g i n客户没有机会读取来自服务器的数据,因此,客户通告的窗口大小总是小于 4 0 9 6。

    93230

    Linux处理数据包过程

    Linux主机默认未开启ip_forward功能,这使得数据包无法转发而被丢弃。...Linux主机和路由器不同,路由器本身就是为了转发数据包,所以路由器内部默认就能在不同网卡间转发数据包,而Linux主机默认则不能转发。...如下图: 另外,IP地址是属于内核的(不仅如此,整个tcp/ip协议栈都属于内核,包括端口号),只要能和其中一个地址通信,就能和另一个地址通信(这么说是不准确的,即使地址属于内核,但还存在一个检查数据包是否丢弃的问题...如果Linux主机有多块网卡,如果不开启数据包转发功能,则这些网卡之间是无法互通的。...例如eth0是172.16.10.0/24网段,而eth1是192.168.100.0/24网段,到达该Linux主机的数据包无法从eth0交给eth1或者从eth1交给eth0,除非Linux主机开启了数据包转发功能

    1.9K40

    wireshark捕获tcp数据包_抓包分析详解

    实验目的 通过本次实验,掌握使用Wireshark抓取TCP/IP协议数据包的技能,能够深入分析TCP帧格式及“TCP三次握手”。...4.本次实验内容: TCP协议是在计算机网络中使用最广泛的协议,很多的应用服务如FTP,HTTP,SMTP等在传输层都采用TCP协议,因此,如果要抓取TCP协议的数据包,可以在抓取相应的网络服务的数据包后...,分析TCP协议数据包,深入理解协议封装,协议控制过程以及数据承载过程。...第三步,通过显示过滤器得到先关数据包:通过抓包获得大量的数据包,为了对数据包分析的方便,需要使用过滤器,添加本机IP地址和TCP协议过滤条件。...窗口大小(16bit)。 如下图所示,窗口大小Windows size value为29200,表示源主机最大能接收29200字节。 校验和(16bit)。

    8.2K20

    长篇tcp 网络,汇集大小厂经典问题

    7、为什么tcp 头部没有【包长度】字段呢? 模块二:tcp 的连接建立问题 8、 tcp 三次握手过程&状态变化? 9、 linux系统中如何查看tcp状态? 10、为什么是3次握手?...9、linux系统中如何查看tcp状态? TCP 的连接状态查看,在 Linux 可以通过 netstat -napt 命令查看。 10、为什么是3次握手?而不是其他次数?...所以,重要的是为什么三次握手才可以初始化Socket、序列号和窗口大小并建立 TCP 连接。...网络中可能存在来自发送方的数据包,当这些发送方的数据包被接收方处理后又会向对方发送响应,所以一来一回需要等待 2 倍的时间。...方式一:net.ipv4.tcp_tw_reuse 和 tcp_timestamps 如下的 Linux 内核参数开启后,则可以复用处于 TIME_WAIT 的 socket 为新的连接所用。

    43620

    Tcp是怎样进行可靠准确的传输数据包的?

    概述 很多时候,我们都在说Tcp协议,Tcp协议解决了什么问题,在实际工作中有什么具体的意义,想到了这些我想你的技术会更有所提升,Tcp协议是程序员编程中的最重要的一块基石,Tcp是怎样进行可靠准确的传输数据包的呢...看过很多文章里都提到过Tcp协议的三次握手,在这里我要进行系统的整理一下,学习不能人云亦云,要真的去明白其中的道理,下面是一张理解Tcp/Ip的协议图。...图片 Tcp三次握手 搞懂这个问题首先要知道什么是连接? 用于保证可靠性和流控制机制的信息,包括 Socket、序列号以及窗口大小叫做连接。...RFC793 建立 TCP 连接就是通信的双方需要三种信息达成共识(初始化 Sockets、窗口大小、初始序列号),连接中的一对 Socket 是由互联网地址标志符和端口组成的,窗口大小主要用来做流控制...tcp协议是怎么保证数据准备可靠的 Tcp协议再实际应用中主要是思想朴素而深刻,主要解决的数据包的可靠准确的传递,Tcp协议是怎么做到可靠准确的传送数据包呢?

    27063

    TCP粘包 数据包:我只是犯了每个数据包都会犯的错 |硬核图解

    而"李东","亚健康终结者"这两条消息在进入传输层时使用的是传输层上的 TCP 协议。消息在进入传输层(TCP)时会被切片为一个个数据包。这个数据包的长度是MSS。...由网络接口层(数据链路层)提供给网络层最大一次传输数据的大小;一般 MTU=1500 Byte。...TCP 提交给 IP 层最大分段大小,不包含 TCP Header 和 TCP Option,只包含 TCP Payload ,MSS 是 TCP 用来限制应用层最大的发送字节数。...什么是粘包 那么当李东在手机上键入"李东""亚健康终结者"的时候,在 TCP 中把消息分成 MSS 大小后,消息顺着网线顺利发出。...数据包也只是按着 TCP 的方式进行组装和拆分,如果数据包有错,那数据包也只是犯了每个数据包都会犯的错而已。

    76050

    Linux网络编程TCP

    TCP/IP协议 TCP/IP 协议栈是一系列网络协议(protocol)的总和,是构成网络通信的核心骨架,它定义了电子设备如何连入因特网,以及数据如何在它们之间进行传输。...OSI 7层模型和TCP/IP四层网络模型对应关系 计算机网路基础的知识不过多讲解,主要是让大家明白接下来的Linux网络编程数据流属于那一层,具体如下图 TCP/IP协议数据流示意图 我们接下来讲解的...Linux网络编程Tcp协议是属于传输层的协议 Linux Socket 网络编程 TCP协议 TCP是面向连接的可靠的传输层协议。...TCP编程 Linux中的网络编程是通过socket接口来进行的。socket是一种特殊的I/O接口,它也是一种文件描述符。常用于不同机器上的进程之间的通信,当然也可以实现本地机器上的进程之间通信。...include int listen(int sockfd //socket函数返回的套接口描述字 ,int backlog); //则此值表示listen时的队列大小

    5.4K30

    Linux网络】TCP协议

    接收端应用程序可以一次性的将TCP接收缓冲区内的数据全部读出,也可以分多次读取器,这取决于用户指定的应用程序缓冲区大小。...Linux中(BSD Unix和Windows也是如此), 超时以500ms为一个单位进行控制, 每次判定超时重发的超时 时间都是500ms的整数倍....反之,B发送的TCP报文段也同时包括自己的序号和A发送过来的TCP报文端的确认号。 4、16位窗口大小 现在我们将TCP通信双方看做两个人在当面交流。...同理,为了保证TCP通信的效率,尽量减少丢包的概率,我们也应该控制TCP发送数据的速度,快了也不行,慢了也不行。 那什么指标可以看出接收方接收数据的能力呢?接收缓冲区剩余空间大小恰巧合适。...TCP的四次挥手是为了确保数据流的正确和可靠地关闭。这需要双方都明确地确认关闭请求,并确保所有的数据包都已接收或处理。通过四次握手,每一方都可以确认对方已经完成了数据传输和接收的准备工作。

    11410

    Linux TCP RST情况

    其中复位标志RST的作用就是“复位相应的TCP连接”。 TCP连接和释放时还有许多细节,比如半连接状态、半关闭状态等。详情请参考这方面的巨著《TCP/IP详解》和《UNIX网络编程》。...原因在于Socket.close()方法的语义和TCP的“FIN”标志语义不一样:发送TCP的“FIN”标志表示我不再发送数据了,而Socket.close()表示我不在发送也不接受数据了。...; 客户端和服务器统一使用TCP短连接。...然后是客户端和服务器统一使用TCP长连接:客户端使用TCP长连接很容易配置(直接设置HttpClient就好),而服务器配置长连接就比较麻烦了,就拿tomcat来说,需要设置tomcat的maxKeepAliveRequests...,固定5分钟tcp连接回收,而且发现连接出错时,重发之前10s内消息。

    5.9K10

    linux 查看目录大小_shell判断文件大小

    -s或–summarize 仅显示总计,即当前目录的大小。 -S或–separate-dirs 显示每个目录的大小时,并不含其子目录的大小。...1> 要显示一个目录树及其每个子树的磁盘使用情况 du /home/linux 这在/home/linux目录及其每个子目录中显示了磁盘块数。...3> 以MB为单位显示一个目录树及其每个子树的磁盘使用情况 du -m /home/linux 这在/home/linux目录及其每个子目录中显示了 MB 磁盘块数。...4> 以GB为单位显示一个目录树及其每个子树的磁盘使用情况 du -g /home/linux 这在/home/linux目录及其每个子目录中显示了 GB 磁盘块数。...10>只显示一个目录树的全部磁盘使用情况 du -s /home/linux 11>查看各文件夹大小:du -h –max-depth=1 查看指定目录: 代码如下: 其中 /path表示路径

    11.6K20

    详解TCP数据包中SYN,ACK字段与数据发送的关联

    TCP协议中,为了确保数据能稳定发送,协议使用数据包中的syn,ack两个字段来监控数据是否正确发生和接收,本节我们看看这两个字段如何保证数据的平稳传输。...我们假设数据包最大发送字节数为536字节,因此任何一方想发送超过这个长度的数据时,TCP会将数据切分成多个不超过536字节的小块。...假设客户端先发起请求,数据包中的数据是140字节,假设客户端和服务器的滑动窗口大小都是361,由于已经发送了140字节的数据,窗口内还剩220字节数据可以发送,于是不等服务器回应,客户端继续将剩下的220...假设服务器收到了客户端发来的140字节数据包,此时它发送TCP数据包给客户端,其中包含80字节的数据,此时它的syn字段要设置成241,同时ack字段要设置成141,也就是告诉客户端140字节成功收到,...此外数据包在发送过程中可能会丢失,这时就需要触发重传机制,同时TCP协议还需实时监测是否有网络拥堵,一旦这种情况出现TCP就得启动相应的应对机制等。

    2.4K30

    Linux 如何查看目录大小

    du命令 参考文章:how to check directory size in Linux 用于显示目录或文件的大小。...显示当前目录文件或者文件占用空间:du 显示指定文件或文件夹的大小:du test.txt 方便阅读的格式查看目录所占空间情况:du -h test 仅显示当前文件夹的总计:du -s * 以方便阅读的方式查看指定目录层级的空间占用情况...:du -lh --max-depth=1 du命令排序 查看目录大小的命令是du(当然也可以查看文件大小),例如:du ems_data,就是查看ems_data目录下各子目录的大小;du,就是查看当前目录下各子目录的大小...;du *,就是查看当前目录下各子目录和文件的大小。...sort +1 -2 选出排在前面的10个:du ems_data | sort -rn | head 选出排在后面的10个:du ems_data |sort -rn | tail 当前目录的大小

    31.7K30
    领券