TCP/IP
翁正存
做一名合格的工程师
展开
-
ARP
ARP的作用:将IPV4地址映射到MAC地址。每台主机都会保存ARP地址缓存,记录IPV4地址与对应的MAC地址,动态ARP地址缓存的过期为20分钟,静态ARP地址缓存永久有效。可以使用arp命令查询和配置ARP缓存。访问接口https://mp.csdn.net/postedit,首先要通过DNS将mp.csdn.net解析为IP地址,如192.168.10.0/24,此时客户端只知道子...原创 2018-11-20 17:34:29 · 3490 阅读 · 0 评论 -
TCP确认ACK与Kafka的ACK相通之处
TCP协议经常利用一个ACK来确认多个报文段,因为ACK是可以累积的。Kafka消费者一般会隔一段时间提交一次offset,避免占用带宽,异曲同工之妙。原创 2018-12-05 13:16:06 · 474 阅读 · 0 评论 -
2MSL导致的服务器端口占用问题
MSL(Maximum Segment Lifetime)是最大报文段生存时间,它代表任何报文段在被丢弃前在网络中被允许存在的最长时间。这个时间是有限制的,因为TCP依赖IP传输数据报,而IP数据报有TTL字段和最大跳数字段,这两个字段限制了IP数据报在网络中的生存时间,最长为2分钟。2MSL是关闭TCP连接时,进入TIME_WAIT状态后,主动发起关闭的一方需要等待的时间,关闭发起方一直要等...原创 2018-12-05 14:20:45 · 375 阅读 · 0 评论 -
TCP重传二义性
当一个TCP报文段的传输出现超时时,该数据包就会被重传,接着收到一个确认信息,那么该信息是对第一次还是第二次传输的确认就存在二义性。二义性的问题都是因为缺少足够的信息,可以增加一个信息维度,例如在TCP头加入重传序列号retry_sqe_no,可以比较这个序列号来判断收到的ACK是哪次重传的应答。...原创 2018-12-06 14:23:39 · 1015 阅读 · 0 评论 -
TCP超时重传
RTT:发送TCP报文段到收到ACK的时间。RTO:TCP决定重传的超时时间,这是一个基于RTT的统计时间。TCP超时重传分为基于计时器的重传和快速重传。失序数据:序列号高于空缺的数据成为失序数据,因为这些数据和之前接收到的序列号不连续。1.基于计时器的重传:TCP根据基于时间动态变化的RTT测量值得到RTO,发送报文段时应确保重传计时器设置合理。在设置定时器前,需要记录被计时...原创 2018-12-07 14:44:52 · 462 阅读 · 0 评论 -
对地址的理解
程序的执行最重要的一步是寻址,使用HTTP访问网络资源最重要一步的是根据域名解析出服务器的IP和PORT,也是寻址的过程,这难道是巧合吗?我认为不是巧合,因为信息不会无缘无故的流动,只有建立信息流动的链路才能整合资源。跟“要想富,先修路”一样,要想让资源的价值最大化,必须构建起资源流动的通道,做渠道的,做电商的,等等模式都是在打通资源的流动的通道,大道至简啊!...原创 2018-12-20 16:06:24 · 195 阅读 · 2 评论 -
TCP拥塞控制之慢启动
TCP以一定数目的数据段开始慢启动,称为初始窗口(Initial Window,IW)。在没有ACK延时的情况下,每接收到一个好的ACK就意味着发送方可以发送两个新的数据包,这会使得发送方窗口随时间呈指数增长。当发送ACK时延时,如每隔1个数据包生成一个ACK,cwnd仍然以指数增长,当增幅较小。如果cwnd增长至非常大,发送大量的数据包会导致网络瘫痪,此时,cwnd将减小至原值的一半,这是慢...原创 2018-12-17 10:51:05 · 348 阅读 · 0 评论 -
TCP拥塞控制之拥塞避免
TCP发送方通过慢启动确定发送数据的窗口阈值,一旦达到这个阈值,就意味着虽然网络中可能有更多可用的资源,但是如果占用全部的资源,将会使共享路由器队列的其他TCP连接出现严重的丢包和重传情况,从而导致整个网路性能不稳定。为了传输更多的资源而不至于影响其他TCP连接的传输,TCP实现了拥塞避免算法。一旦cwnd达到阈值,就会进入拥塞避免阶段,cwnd每次成功接收到一个ACK,cwnd只会增加一个特...原创 2018-12-17 11:07:35 · 419 阅读 · 0 评论 -
合理利用累积量
我觉得学习《Tcp/IP详解 卷一:协议》后,如果能对滑动窗口的底层思想-利用累积量有个深刻认识,这本书就算没白读。累积意味着不会做重复的劳动,意味着高效。Kafka的消费者定时提交offset就是利用累积量,放大整个系统的吞吐量。今天优化前人留下的业务代码,就利用了累积量,填掉了前人遗留的扫库的坑。...原创 2018-12-28 16:43:49 · 443 阅读 · 0 评论 -
为什么TIME_WAIT状态到CLOSED状态要等2MSL的时长
1.TIME_WAIT需要确保关闭端发送的FIN的ACK被对端的套接字接收到,如果1个MSL内对端没有收到响应,那么关闭端就要重发FIN的ACK。2.当关闭当前的TCP连接时,最后发送出去的数据报可能被路由器的转发队列缓存,如果立马切换到CLOSED状态,可能使用相同窗口的新的TCP连接收到的数据报还是前一个TCP连接缓存在路由器中的数据。...原创 2018-12-18 16:55:50 · 863 阅读 · 1 评论 -
telnet命令
Windows下的telnet命令用于建立一条到服务器的TCP连接。telnet ip port,如telnet 10.10.2.123 8086,当这个socket没有被应用程序监听时,输入这条命令,会报错:正在连接10.10.2.123...无法打开到主机的连接。 在端口 8086: 连接失败当这个socket被应用程序监听时,输入这个命令,会与服务器之间建立一条TCP连接。客户端...原创 2018-12-04 17:55:27 · 2526 阅读 · 0 评论 -
TCP术语套接字
一个IP地址和一个端口的组合被称为一个套接字(socket)或者一个端点(endpoint)。每个TCP连接由一对套接字唯一地标识。原创 2018-12-04 16:43:04 · 292 阅读 · 0 评论 -
IP协议简介
IP提供了一种不可靠的、无连接的数据交付服务。所有TCP、UDP、ICMP和IGMP数据都通过IP数据报传输。不可靠:IP协议不保证IP数据报能成功到达目的地。当错误发生时,例如一台路由器的缓存耗尽,IP提供一个简单的错误处理方法:丢弃最后达到的数据。任何可靠性都必须由上层协议(如TCP)提供。无连接:IP协议不维护任何路由器中数据报相关的任何链接状态信息,每个数据报独立于其他数据报来处理...原创 2018-11-21 14:53:16 · 430 阅读 · 0 评论 -
Wifi控制帧:RTS/CTS和ACK
帧控制与帧确认是流量控制的手段,流量控制有助于接收方使一个过快的发送方降低其发送帧的速度,帧确认ACK有助于发送方知道哪些帧被正确接收。802.11网络支持RTS/CTS,通过放缓传输来进行流量控制。当RTS/CTS启用时,一个站在发送数据帧之前发送一个RTS帧,当接收方愿意接收流量时,它会响应一个CTS帧,在接收方收到CTS帧后,会开启一个时间窗口(在CTS帧中标识),用于向确认接收的站点发送数...原创 2018-11-19 12:00:42 · 13234 阅读 · 0 评论 -
wifi-帧分片
802.11支持帧分片,可以将一个数据帧分为多个分片。使用帧分片时,每个分片有自己的MAC头和尾部CRC,各分片可以独立处理。当信道有明显干扰时,分片有助于提高到达率,从而提交性能。由于分片只传输整个帧的一部分数据,如果需要重传,则只需重传出错的分片,而不需重传整个原始帧。分片仅用于目的地址为单播的帧,不支持组播或广播。为了具备这种能力,顺序控制字段包含一个分片号(4位)和一个序列号(12...原创 2018-11-19 14:13:30 · 1270 阅读 · 0 评论 -
关于加解密
应用程序中的签名验签与链路层的CRC一脉相承,都是对数据进行校验,防止数据被篡改,丢弃接收到的不完整数据。原创 2018-11-19 14:48:03 · 116 阅读 · 0 评论 -
环回
为了解决客户机使用网络协议(如TCP/IP协议)与同一台计算机上的服务器通信的需求,实现了工作在网络层的虚拟的环回网络接口。它不是真正的网络接口,实际上是一种由操作系统提供的专用软件,可通过TCP/IP与统一主机的其他服务器进行通信。IPV4中,以127开始的地址为这个目的保留,典型的如127.0.0.1地址,或者以localhost代替。发送到环回接口的IP数据报不会出现在任何网络中...原创 2018-11-19 17:04:50 · 869 阅读 · 0 评论 -
链路层-帧大小
以太网的帧有最小和最大字节限制,最小的帧是64字节,数据区的有效载荷长度最小为48字节,当有效载荷较小时,以保障帧的大小达到64字节。最大的帧是1518字节,由于MTU(最大传输单元)的上限为1500,对于TCP/IP网络常用的较大尺寸是64KB的数据,需要至少44帧来传输。...原创 2018-11-17 15:35:19 · 3203 阅读 · 0 评论 -
广播风暴与解决办法
广播风暴:在一个环路的链路网络中,采用简单的洪泛(将接收到的帧转发到除接收端口外的所有端口)转发帧,将会造成帧在交换机中循环转发,帧流量被放大很多倍,从而造成的流量激增叫做广播风暴。广播风暴是因为转发链路中存在环,所以,使用STP或RSTP协议,使链路中不存在环路,避免了流量被放大。...原创 2018-11-17 16:37:15 · 7623 阅读 · 0 评论 -
MTU与路径MTU
IP层一次传输的数据报上限被限制为1500字节,链路层为了保持与IP层兼容,最大传输数据报也被限制为1500字节,这种特征被称为最大传输单元MTU。如果一个IP需要发送一个数据报,并且这个数据报比链路层MTU大,则IP通过分片将数据报分解为较小的部分,使每个分片的大小都小于MTU。当两台主机跨越多个网络通信时,每条链路都可能有不同大小的MTU。在所有链路的整个网络路径上,最小的MTU被称为路径...原创 2018-11-20 10:43:57 · 1767 阅读 · 1 评论 -
TCP的ACK
当TCP接收到连接的另一端点发来的数据时,它会发送一个确认。这个确认可能不会立即发送,而会延迟片刻。TCP使用的ACK是累积的,因此,一个指示字节号N的ACK暗示所有直到N的字节(但不包括N)都已经被接收了。这对于ACK丢失来说,提供了一定的鲁棒性,因为如果序列号1212的ACK丢失,但是收到序列号1213的ACK,则说明发送1212的报文已经被接收方收到并处理了。TCP头里有个32位的序列号...原创 2018-12-04 16:36:53 · 3293 阅读 · 1 评论 -
识别一个通信连接
同一个端口号,在传输层可能同时被TCP/UDP应用程序监听,所以,在网络层,根据协议号(TCP是6,UDP是17)决定发给哪一个应用程序。原创 2019-01-07 11:29:46 · 180 阅读 · 0 评论