
TCP/IP
文章平均质量分 81
vector6_
linux c++/java
展开
-
TCP SYN报文什么情况下会被丢弃?
TCP SYN报文什么情况下会被丢弃?SYN 报文被丢弃的两种场景:开启 tcp_tw_recycle 参数,并且在 NAT 环境下,造成 SYN 报文被丢弃accpet 队列满了,造成 SYN 报文被丢弃tcp_tw_recycle我们知道对于TIME_WAIT状态,Linux 操作系统提供了两个可以系统参数来快速回收处于 TIME_WAIT 状态的连接,这两个参数都是默认关闭的:net.ipv4.tcp_tw_reuse,如果开启该选项的话,客户端(连接发起方) 在调用 connec原创 2022-05-01 22:19:05 · 890 阅读 · 0 评论 -
HTTP连接管理
HTTP常见状态码:状态码 原因短语 含义100 Continue 说明收到了请求的初始部分,请客户端继续,发送了这个状态码之后,服务器在收到请求之后必须进行响应。101 Switching Protocols 说明服务器正在根据客户端的指定,将协议切换成Update首部所列的协议200 OK 请求没问题,实体的主体部分包含了所请求的资源201 Created 用于创建服务器对象的请求(比如,PUT)。响应的实体主体原创 2022-05-01 20:42:24 · 232 阅读 · 0 评论 -
调整拥塞控制的性能
调整拥塞控制的性能我们都知道经典的拥塞控制算法会经过慢启动、拥塞避免、快速重传、快速恢复等流程,那拥塞控制的性能受哪些因素的影响呢?慢启动阶段理论上,对于TCP流量控制,只要接收方的读缓冲区足够大,就可以通过报文中的接收窗口,要求对方更快地发送数据。网络的传输速度是有限的,它会直接丢弃超过其处理能力的报文。如果网络中的每个连接都按照接收窗口尽可能地发送更多的报文时,就会形成恶性循环,最终超高的网络丢包率会使得每个连接都无法发送数据。所以需要另一种对网络传输速率进行控制的机制,即拥塞控制。首先TCP连原创 2022-04-30 10:48:54 · 273 阅读 · 0 评论 -
调整TCP缓冲区
调整TCP缓冲区TCP 连接是由内核维护的,内核为每个连接建立的内存缓冲区,为网络传输服务,也要充当进程与网络间的缓冲桥梁。如果连接的内存配置过小,就无法充分使用网络带宽,TCP 传输速度就会很慢;如果连接的内存配置过大,那么服务器内存会很快用尽,新连接就无法建立成功。本文就对Linux TCP缓冲区的机制及调整方法进行分析。滑动窗口是如何影响传输速度的?我们知道TCP提供了可靠的传输,主要的机制就是在报文发出后,必须收到接收方返回的 ACK 确认报文,如果在RTO内还没收到,就会重新发送这个报文。由原创 2022-04-30 10:42:01 · 5175 阅读 · 0 评论 -
TCP数据流与窗口管理
TCP数据流与窗口管理TCP是基于流的数据传输协议,本文主要对TCP的动态数据传输进行分析,即流量控制及窗口管理。TCP通过动态调节窗口大小来控制发送端的操作,确保接收端不会溢出。当然,流量控制的思想也可扩展应用于其他问题,可以保护接收端免于溢出,还可以处理中间传输网络的拥塞问题。交互式通信我们知道交互式TCP连接需要在客户端和服务器之间传输用户输入信息,交互式数据一般会比较小,可能就只有几十字节。ssh就会产生这样的较小的报文数据,对一个ssh连接,当我们输入一个交互命令后,每个交互按键通常都会生原创 2021-10-08 00:14:34 · 519 阅读 · 0 评论 -
TCP超时与重传
TCP超时与重传本文主要分析TCP传输的效率与性能。由于IP层不保证传输的可靠性,可能出现丢失、重复或失序丢包等情况,TCP协议提供可靠数据传输,为保证数据传输的正确性,TCP重传其认为已丢失的包。TCP拥有两套独立机制来完成重传,一是基于时间,二是基于确认信息的构成。第二种方法通常比第一种更高效。对于基于时间的重传:TCP在发送数据时会设置一个计时器,若至计时器超时仍未收到数据确认信息,则会引发相应的超时(基于计时器的)重传操作,计时器超时被称为重传超时(RTO)。另一种方式的重传称为快速重传,通原创 2021-10-08 00:12:05 · 2590 阅读 · 0 评论 -
TCP连接队列
TCP连接队列通常情况下,一个并行的服务器会为每一个客户端分片一个新的进程或线程,并准备着处理下一个到来的连接请求,然而,在侦听服务器繁忙处理连接请求,或者被伪造的连接请求攻击时,TCP应当是如何处理的呢?连接的两种状态在被用于应用程序之前新的连接可能会处于下述两个状态:1.连接尚未完成但是已经接收到SYN(即处于SYN_RCVD状态)。2.连接已经完成了三次握手并且处于ESTABLISHED状态,但还未被应用程序接受。linux对连接的限制现代Linux内核中,使用连接队列来限制完全形成的等原创 2021-10-07 23:02:28 · 440 阅读 · 0 评论 -
TCP重置报文段(RST)
TCP重置报文段(RST)通常当发现一个到达的报文段对于相关连接而言是不正确的时,TCP就会发送一个重置报文段。总体上来说,重置报文段主要有以下几种场景:1.针对不存端口的连接请求当一个连接请求到达本地却没有相关进程在目的端口侦听时就会产生一个重置报文段。2.终止一条连接通常终止一条连接的正常方法是由通信一方发送一个FIN。这种方法有时也被称为有序释放。(因为FIN是在之前所有排队数据都已经发送后才被发送出去,通常不会出现丢失数据的情况)而在任何时刻,我们都可以通过发送一个重置报文段RST替代F原创 2021-10-07 23:02:02 · 6429 阅读 · 0 评论 -
TCP连接管理
TCP连接管理TCP作为一种面向连接的单播协议,比 UDP复杂得多,必须在检测并修补所有在IP层(或下面的层)产生的数据传输问题,比如丢包、重复以及错误,以及连接何时建立、正常地终止等问题。即TCP需要对连接状态进行管理。TCP连接的建立与终止一个TCP连接由一个4元组组成:本端IP、本端端口号、对端IP、对端端口号。一个典型的TCP连接的建立与关闭过程是通过三次握手与四次挥手完成的:连接建立的主要步骤有:1.主动连接方(客户端)发送一个SYN报文(Synchronize,同步标志),并指明自原创 2021-10-07 23:01:05 · 878 阅读 · 0 评论 -
TCP半关闭
TCP半关闭建立一个TCP连接需要三次握手,而关闭一个TCP连接需要四次挥手,我们知道三次握手因为被动开启连接方的ACK与SYN优化为一个报文发送,那么为什么关闭连接的挥手需要四次而不是三次呢?原因就是本文的主题:TCP的半关闭状态。我们知道TCP是一个全双工的连接,任何一方都可以发送数据接收数据,并且都可以发起关闭连接请求,除此之外TCP还支持半关闭操作,即仅关闭一个数据流的一个传输方向,而两个半关闭操作合在一起就能够关闭整个连接,TCP协议规定:通信的任何一方在完成数据发送任务后都能够发送一个FIN原创 2021-10-07 22:59:10 · 1590 阅读 · 0 评论 -
TCP 传输控制协议
TCP 传输控制协议传输层中最重要的两个协议是TCP和UDP,也是我们接触最多且熟悉的,本文将对TCP协议做一个概括性分析。TCP与UDP的区别我们都知道 IP 包是没有任何可靠性保证的,一旦发出去,不论是否丢失都只能随它去。在IP层之上,UDP作为一种简单、高效的协议继承了 IP 包的特性,不保证不丢失,不保证按顺序到达。但是TCP(Transmission Control Protocol, 传输控制协议)作为一种可靠的,面向连接、基于字节流的协议,在可靠通信的实现方面提供了许多有效的机制。TC原创 2021-10-07 22:58:34 · 151 阅读 · 0 评论 -
UDP 协议格式及应用
UDP 协议格式及应用在IP层之上为传输层,最重要的两个协议是TCP和UDP,也是我们接触最多且熟悉的,本文将对UDP协议格式、特性及相关应用场景进行分析。TCP 和 UDP 有哪些区别?首先我们都知道,TCP 是面向连接的,UDP 是面向无连接的。那么什么叫面向连接,什么叫无连接呢?在互通之前,面向连接的协议会先建立连接。例如,TCP 会三次握手,而 UDP 不会。为什么要建立连接呢?TCP/UDP建立连接的本质就是在客户端和服务端各自维护一定的数据结构(一种状态机),来记录和维护这个“连接”的状原创 2021-10-07 22:57:41 · 1648 阅读 · 0 评论 -
网关与NAT
网关与NATMAC 头和 IP 头一旦配置了 IP 地址和网关,往往就能够指定目标地址进行访问了。而在跨网关访问的时候,牵扯到 MAC 地址和 IP 地址的变化。在 MAC 头里面,先是目标 MAC 地址,然后是源 MAC 地址,然后有一个协议类型,用来说明里面是 IP 协议。IP 头里面的版本号,目前主流的还是 IPv4,除此以外有服务类型 TOS,TTL,8 位标识协议(标识下一层是TCP还是UDP),还有最重要的就是源 IP 和目标 IP。在任何一台机器上,当要访问另一个 IP 地址的时候原创 2021-10-07 22:55:37 · 2203 阅读 · 0 评论 -
TCP/IP--IP分片
IP分片我们知道链路层通常对可传输的每个帧的最大长度有一个上限。为了保持IP数据报抽象与链路层细节的一致和分离,IP引入了分片与重组。当IP层接受到一个要发送的IP数据报时,它会判断该数据报应该从哪个本地接口发送(通过查找转发表),以及要求的MTU是多少。IP层比较外出接口的MTU和数据的大小,如果数据报太大则进行分片。IPv4中的分片可以在原始发送方主机和端到端路径上的任何中间路由器上进行。当一个IP数据报被分片了,直到它到达最终目的地才会被重组。原因有以下两点,其中第二点是主要原因:在网络中不原创 2021-10-07 22:52:55 · 409 阅读 · 0 评论 -
ICMP协议与ping
ICMP协议与pingping 命令是我们最常用的命令之一,一般用于侦测本机到目标主机的网络是否通畅,那么ping 是如何工作的呢?ICMP 协议格式及作用ping 是基于 ICMP 协议工作的。ICMP 全称 Internet Control Message Protocol,就是互联网控制报文协议。网络包在异常复杂的网络环境中传输时,常常会遇到各种各样的问题。当遇到问题的时候,一般都需要向源地址报告情况,以调整传输策略。由于IP协议本身并没有为终端系统提供直接的方法来发现那些发往目的地址失败的I原创 2021-10-07 22:42:31 · 3354 阅读 · 0 评论 -
IP地址和MAC 地址
IP地址和MAC 地址IP地址分类通过ifconfig 或 ip addr 命令我们可以查看当前机器上所有的网卡,大部分的网卡都会有一个 IP 地址。例如10.100.122.2 就是一个 IP 地址。这个地址被点分隔为四个部分,每个部分 8 个 bit,所以 IP 地址总共是 32 位。可想而知对于当前计算机数量这样产生的 IP 地址的数量很快就不够用了。因为不够用,于是就有了 IPv6,例如 inet6 fe80::f816:3eff:fec7:7975/64。IPv6 是128 位的,目前看来是原创 2021-10-07 22:40:13 · 597 阅读 · 0 评论