首页
学习
活动
专区
圈层
工具
发布

TCP(一)

TCP的特点:三次握手、四次挥手、可靠连接、丢包重传。所有的关键词都围绕着可靠传输。 实现可靠传输的核心机制:seq+ack。通过ack判断是否有丢包,是否需要重传。 三次握手 ?...1)最重要的目的:告诉对方自己的seq,对方回复ack(收到的seq+包的大小),用于判断是否有丢包;   2)其他目的:协商信息,例如:MSS–最大传输包、SACK_PERM–是否支持Selective...这是因为服务端的LISTEN状态下的SOCKET当收到SYN报文的建连请求后,它可以把ACK和SYN(ACK起应答用,而SYN起同步作用)在一个报文里来发送。...怎么确定是否丢包? ack总是等于seq+len,len为包的大小,(SYN、FIN、ACK包除外,len为0),发送方通过ack知晓接收方是否收到消息。ack表示这个数字前面的数据都收到了。...抓包实例验证 flags 标志由S(SYN), F(FIN), P(PUSH), R(RST), 在10.18.222.22上抓包 tcpdump -i eth0 -nn -S -vv host

1.3K10

【HTTP】连接管理--TCP

TCP连接 TCP连接是因特网上的可靠连接 TCP为HTTP提供了一条可靠(是因为 确认延迟)的比特传输管道。从TCP连接一端填入的字节会从另一端以原有的顺序、正确的传送出来。...延迟确认算法 会在一个特定的窗口时间(通常是100~200毫秒)内将输出确认存放在缓冲区中,以寻找能够捎带它的输出数据分组;如果再那个时间段内没有输出数据分组,就将确认信息放在单独的分组中传送,这会导致延时...管道化连接 HTTP/1.1 允许在持久连接上可选地使用请求管道。 ?...而通常在网络故障排查中,使用 IP 地址和端口号更便于分析问题;用 -n 选项显示 IP 地址,-nn 选项显示端口号 $ sudo tcpdump -i any -c100 -nn port 8431...nn src 192.168.122.98 and port 80 保存抓包数据 使用 -w 选项来保存数据包而不是在屏幕上显示出抓取的数据包: $ sudo tcpdump -i any -c10 -

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

    TCP重传问题排查思路与实践

    图 under the strange horizon by joeyjazz 一 关于TCP重传 TCP有重传是正常的机制,为了保障数据传输可靠性。...只是局域网环境,网络质量有保障,因为网络问题出现重传应该极低;互联网或城域网环境,线路复杂(可以想象下城市地下管网,错综复杂的电线杆等),网络质量不好保障,重传出现概率较高。...可以用常见问题:1 的方法缩小排查范围 3.3 带宽跑满 排查思路 1、查看主机监控,检查是否带宽跑满 2、检查重传联路上相关的网络设备是否有带宽跑满 3.4 不常见问题 1 网络设备端口或光模块异常等导致包...metric_item" else data_item="${data_item},${metric_item}" fi done echo "[$data_item]" 五 案例实践 1 在遇到丢包重传的机器上抓包并使用...使用wireshark打开tcpdump的结果,在搜索框里入手tcp.analysis.retransmission 得到如下结果: ? 图1 表明服务端发生了三次重传动作。

    13.4K30

    【Linux】认识协议、MacIP地址和端口号、网络字节序、socket套接字

    传输层:提供端到端的通信服务,确保数据的可靠传输或快速、不可靠的传输。TCP(传输控制协议)提供可靠的数据传输,而UDP(用户数据报协议)则提供无连接的数据传输服务。...如果有多台同时发送,会发生数据干扰,我们称之为数据碰撞,所有发送数据的主机要进行碰撞检测和碰撞避免,没有交换机的情况下,一个以太网就是一个碰撞域,局域网通信的过程中,主机对收到的报文确认是否是发给自己的...listen()成功返回 0,失败返回-1 accept: 三次握手完成后,服务器调用 accept()接受连接 如果服务器调用 accept()时还没有客户端的连接请求,就阻塞等待,直到有客户端 连接上来...addr 是一个传出参数,accept()返回时传出客户端的地址和端口号 如果给 addr 参数传 NULL,表示不关心客户端的地址 addrlen 参数是一个传入传出参数(value-result...本篇文章的分享就到这里了,如果您觉得在本文有所收获,还请留下您的三连支持哦~

    55010

    搞懂 TCPIP:终于明白为啥 ping 不通不是“网断了”

    模型更简洁实用):层级 功能描述 主要协议 应用层 提供用户接口(HTTP、DNS等)HTTP、HTTPS、FTP、DNS 等传输层 建立通信连接(可靠.../不可靠) TCP、UDP 网络层 找路径,搞地址 IP、ICMP、ARP 网络接口层接入硬件网络 Ethernet、...网络层 = 地图调度中心:计算你家在哪,快递车走哪条路,是否需要绕行(IP负责寻址)。链路层 = 快递员本人:真的把快递送到你家门口的物理链路(网线/无线/电信信道等)。...客户端发送 SYN(我要连)2. 服务端回应 SYN-ACK(收到,咱可以聊)3. 客户端回应 ACK(好,聊吧)这三步才建立连接;UDP 不搞这套,直接上,发送完就不管你有没有收。...tcpdump:命令行抓包工具,适合远程服务器排查。netstat / ss:查看连接状态,看是否 TCP 在握手。curl -v / telnet / ping / dig:用于应用层和传输层调试。

    48500

    闲聊k8s的优雅关闭连接

    序言 当数据在进行交互的时候,如果连接发生了改变,就必然会涉及到是否是无损关闭连接,主要就是看结束连接的时候是否是四次挥手关闭,短连接其实还好,最关键的是长连接如何关闭。...特别是对于websocket连接,grpc的连接,这种都是一个连接到死的那种,不过现在基本上客户端都兼容了,也就是连接断开了,也会自动进行重连。...设置为300秒,这样就给了pod充足的时间来消化当前的请求,让请求更加无损的切换到新的pod或者连接上去。...由于压测的时候,包其实是很多的,所以一般可以用分段抓包,一个包100m进行抓包,从而减少分析的难度。...tcpdump -C 100 -w tcp.pcap 风言风语 连接的关闭是否优雅,就看请求是否有失败的可能,如果可能有失败的,那么说明不是优雅的,尽量优雅,但是有些垃圾流量其实也是可以适当抛弃的,用客户端来进行兜底处理

    59710

    【Linux高性能服务器编程】前篇

    tcp\ip协议族 网络层靠ip找电脑 数据链路层靠mac找电脑_arp和rarp 我在看书,她在画画 网络层 wan用路由器连接lan 由多个中介节点路由器连一起 ip协议追核心 寻找合适的下一跳...另外的核心 icmp 给ip站岗的 不严格意义上的网络层报文 来管差错类型值不同 查询的 是一个信号的排头兵 先遣部队,迅捷刺猴 传输层 sctp流控制传输协议 为了在因特网传递电话信号...telnet 远程登录 ospf开放最短路径优先 dns 应用层协议既可以用tcp 又可以用udp 可以看/etc/services 封装 分用 测试网络 观察arp通信过程,用tcpdump...第一个目标是广播地址 感人 第二个是应答 dns服务查看 tcpdump抓 内核有tcp udp的内核发送缓冲区 也有 内核接受缓冲区 ip协议 ip是整个tcp ip协议族的动力...无状态 无连接 不可靠 收到ip报 拆数据部分给上层tcp协议

    2K30

    TCP问题分析

    TCP问题分析 网络的五层协议 物理层 数据链路层 网络层,IP协议,ICMP协议(ping) 传输层,传输层有两个协议,面向连接的TCP和无连接的UDP,TCP是点对点的可靠连接,保证数据顺序必达...,这个是我平时比较常用的抓包命令,是全部都抓,无论是无线网卡还是数据网络,这种抓包命令在网络切换,网络断线重连的时候依然能保持抓包,如果采用指定数据网络的抓包,例如:tcpdump -i “aaa” -...any的抓包方式,输入命令后可以用ps | grep tcpdump命令看下抓包进程是否运行 如果手机系统中把tcpdump模块给裁剪掉,那么需要去网上下载tcpdump,然后执行如下步骤: adb push...发生之后可能就怀疑链路是否发生拥塞,或者网络延迟,丢包等等来去判断此时网络是否稳定 tcp retransmission TCP协议既然要保证消息必达,所以在一个消息发送出去之后,就会等待对方确认收到这个消息的...Ack,在消息发送出去之后会启动一个定时器来检测是否在规定时间内有收到Ack,如果没有收到Ack,这时候就会触发此消息重传,这里还涉及到RTT(消息的回显时间),RTO(消息重传超时),每一次消息包发送都可能

    1.5K30

    Unity 多人游戏框架学习系列十二

    前言 书接上回,承接下回,一系列的。 博客将会介绍多人游戏学习。希望这篇博客对Unity的开发者有所帮助。 大家好,我是心疼你的一切,不定时更新Unity开发技巧,觉得有用记得一键三连哦。...isReady 该标志用于控制是否将状态更新发送到此连接 lastMessageTime 在此连接上收到消息的最后时间。 address 此连接所连接到的端点的 IP 地址。...maxDelay 在连接上发送数据包之前的最大延迟。 networkConnectionClass 创建新网络连接时要使用的类。 numChannels 为网络配置的通道数量。...NetworkServerSimple 也没有任何静态接口或单例,所以在同一时间内,在一个进程中可存在多个实例。...不定时更新Unity开发技巧,觉得有用记得一键三连哦。么么哒!

    8510

    Linux 虚拟网络设备之 bridge

    Host Unreachable --- 192.168.2.1 ping statistics --- 1 packets transmitted, 0 received, +1 errors, 100%...Host Unreachable --- 192.168.3.1 ping statistics --- 1 packets transmitted, 0 received, +1 errors, 100%...,记得打开网卡的混杂模式(不是在Linux里面,而是在虚拟机的配置上面,如VirtualBox上相应虚拟机的网卡配置项里面),不然veth1的网络会不通,因为eth0不在混杂模式的话,会丢掉目的mac地址是...在我们常见的物理交换机中,有可以配置IP和不能配置IP两种,不能配置IP的交换机一般通过com口连上去做配置(更简单的交换机连com口的没有,不支持任何配置),而能配置IP的交换机可以在配置好IP之后,...通过该IP远程连接上去做配置,从而更方便。

    3.2K30

    套接字函数 | socket、bind、listen、accept、connect

    AF_UNIX 本地协议,使用在Unix和Linux系统上,一般都是当客户端和服务器在同一台及其上的时候使用。...该协议是不可靠的,使用UDP来进行它的连接。 SOCK_SEQPACKET该协议是双线路的、可靠的连接,发送固定长度的数据包进行传输。必须把这个包完整的接受才能进行读取。...(ping、traceroute使用该协议) SOCK_RDM 这个类型是很少使用的,在大部分的操作系统上没有实现,它是提供给数据链路层使用,不保证数据包的顺序。...socket文件描述符,用于和客户端通信,失败返回-1,设置errno 三方握手完成后,服务器调用accept()接受连接,如果服务器调用accept()时还没有客户端的连接请求,就阻塞等待直到有客户端连接上来...addr是一个传出参数,accept()返回时传出客户端的地址和端口号。

    63210

    COS+CVM+CDN 实现低成本高效率往返传输数据

    CVM成本敏感,带宽方面紧张,没有开通公网带宽,如何从内网低成本传出与公网隔离的CVM实例的文件?...,直连到国内的服务器的效率不会很高,面临丢包,断连的问题。...优化思路重复流量对于以上场景,从服务器传出来的数据,从本地传入服务器的数据,或多或少都会产生流量费用,中途遇到断连等不可抗力因素的时候,重新传输又会进一步造成费用,所以要考虑的不仅仅是数据传输流程,还要考虑稳定性如果需要来回传输很多次的...使用上述这样的方法更安全可靠。...而且通过COS连接CVM,全部走内网通道,速率,稳定,安全性可以达到最高,同时流量费为0,请求费可以忽略不计除了传输数据,对象存储还提供了高安全性可靠的数据保障,如果本地文件损坏时,对象存储也能提供一份备份以防万一

    5.1K142

    套接字函数 | socket、bind、listen、accept、connect

    AF_UNIX 本地协议,使用在Unix和Linux系统上,一般都是当客户端和服务器在同一台及其上的时候使用。...该协议是不可靠的,使用UDP来进行它的连接。 SOCK_SEQPACKET该协议是双线路的、可靠的连接,发送固定长度的数据包进行传输。必须把这个包完整的接受才能进行读取。...(ping、traceroute使用该协议) SOCK_RDM 这个类型是很少使用的,在大部分的操作系统上没有实现,它是提供给数据链路层使用,不保证数据包的顺序。...socket文件描述符,用于和客户端通信,失败返回-1,设置errno 三方握手完成后,服务器调用accept()接受连接,如果服务器调用accept()时还没有客户端的连接请求,就阻塞等待直到有客户端连接上来...addr是一个传出参数,accept()返回时传出客户端的地址和端口号。

    65410

    Linux常用网络工具总结(一)

    本文整理了在实践过程中使用的Linux网络工具,这些工具提供的功能非常强大,我们平时使用的只是冰山一角,比如、、、等。...可以指定多个条件,但默认是OR关系的,如果需要AND关系,必须传入参数,比如查看22端口并且使用Ipv6连接的进程: fgp@controller:~$ sudo lsof -c sshd -i 6 -...比如我要扫描主机端口,探测哪些端口开放的(黑客攻击必备): fgp@controller:~$ nc -zv 192.168.56.2 1-100 |& grep 'succeeded!'...比如需要抓取目标主机是,通过端口的传输数据包: sudo tcpdump -n-i eth1'dst host 192.168.56.1 && port 22' 输出为: 抓取包: sudo tcpdump...telnet telnet协议客户端(user interface to the TELNET protocol),不过其功能并不仅仅限于telnet协议,有时也用来探测端口,比如查看本地端口22是否开放

    1.6K70

    史上最简明的 Tcpdump 入门指南,看这一篇就够了

    TCP、UDP作为传输层,假如只想监听TCP的数据包 tcpdump tcp 来源主机+端口+TCP 监听来自主机 123.207.116.169 在端口 22 上的TCP数据包 tcpdump tcp...210.27.48.2 稍微详细点的例子 tcpdump tcp -i eth1 -t -s 0 -c 100 and dst port !...加上-S 0 后可以抓到完整的数据包 (5)-c 100 : 只抓取100个数据包 (6)dst port !...tcpdump_save.cap 复制代码也可以加上-U强制立即写到本地磁盘(一般不建议,性能相对较差) 实战例子 先看下面一个比较常见的部署方式,在服务器上部署了nodejs server,监听3000...步骤一:查看请求是否到达nodejs server -> 可通过日志查看。 步骤二:查看nginx是否将请求转发给nodejs server。

    86010

    Linux基础急速入门:用 TCPDUMP 抓包

    服务器上不同服务分别用了TCP、UDP作为传输层,假如只想监听TCP的数据包 tcpdump tcp 来源主机+端口+TCP 监听来自主机123.207.116.169在端口22上的TCP数据包 tcpdump...210.27.48.2 稍微详细点的例子 tcpdump tcp -i eth1 -t -s 0 -c 100 and dst port !...加上-S 0 后可以抓到完整的数据包 (5)-c 100 : 只抓取100个数据包 (6)dst port !...w /tmp/tcpdump_save.cap 也可以加上-U强制立即写到本地磁盘(一般不建议,性能相对较差) 实战例子 先看下面一个比较常见的部署方式,在服务器上部署了nodejs server,...步骤一:查看请求是否到达nodejs server -> 可通过日志查看。 步骤二:查看nginx是否将请求转发给nodejs server。

    2.9K80
    领券