博客专栏  >  互联网   >  TCP协议详解

TCP协议详解

详细阐述TCP协议在Linux内核中的实现

关注
21 已关注
61篇博文
  • 12.2 拥塞控制简介

    12.1.1 拥塞控制的作用        网络的带宽是有限的,如果到达通信子网中某一部分的包数量过多,使得该部分网络来不及处理,以致引起这部分乃至整个网络性能下降的现象,严重时甚至会导致网络通信业务...

    2015-04-19 14:52
    662
  • 12.1 抵达鱼人岛

    现在我们要进入TCP协议中最复杂也是最关键的部分——拥塞控制。如果TCP是一个巨人,我们之前所研究的只是这个巨人的外形、肌肉和骨骼,拥塞控制是他的内脏,是真正决定其生机与活力的部分;若把TCP探秘之旅...

    2015-04-15 09:36
    888
  • 11.3 TCP内核同步

    11.3.1 锁的结构         由2.1 Socket系统调用我们知道,一个TCP socket在内核有一个数据结构,这个数据结构是不能被两个及其以上的使用者同时访问的,否则就会由于数据不一...

    2015-04-14 12:27
    666
  • 11.2 epoll系统调用

    在完成listen系统调用后,作为TCP Server的进程就可以等待接受连接请求了。当请求到来时,进程需要调用accept系统调用生成一个新的socket,并用之与客户端传输数据。这时进程需要管理的...

    2015-04-14 11:03
    584
  • 10.3 接收缓存管理

    TCP收到对端发送的数据后,通常不能立即交付应用进程。在应用进程取走数据之前,数据需要保存在接收缓存之中。如果应用进程取数据的速度比TCP从对端收数据的速度慢,则接收缓存中的数据会越来越多。因此在sk...

    2015-04-13 17:06
    890
  • 10.2 发送缓存管理

    应用进程使用TCP发送的数据会先放入发送缓存中,TCP的发送缓存是一个skb队列。这个队列存在的意义是:保证应用进程交付TCP的数据能够可靠地交付目的端。在收到对端的ACK之前,发送缓存中的数据不能删...

    2015-04-13 13:55
    643
  • 10.1 缓存管理简介

    TCP

    2015-04-12 23:35
    468
  • 9.10 TIME_WAIT定时器

    9.10.1 Why         当socekt进入TIME_WAIT状态后,TIME_WAIT定时器启动。在超时之前,替代socket的tw sock会处理旧连接中的包,阻止其危害新连接。定时...

    2015-04-10 16:48
    730
  • 9.9 FIN_WAIT2定时器

    9.9.1 Why         如果应用进程调用close系统调用关闭socket,但此时socket与对端的通信尚未完成,则这个socket被称为“孤儿socket”。如果孤儿socekt进入...

    2015-04-10 16:06
    748
  • 9.8 延迟ACK定时器

    9.8.1 Why         TCP在收到数据后必须发送ACK给对端,但如果每收到一个包就给一个ACK的话会使得网络中被注入过多报文。TCP的做法是在收到数据时不立即发送ACK,而是设置一个定...

    2015-04-10 14:30
    772
  • 9.7 保活(Keepalive)定时器

    9.7.1 Why         当单工模式下TCP数据发送方发送了一些数据后就不再发数据,数据接收方也不会发送报文,这时TCP连接处于静止状态(比如Telnet应用)。保活功能可以使用保活定...

    2015-04-10 13:21
    773
  • 9.6 坚持(Persist)定时器

    9.6.1 Why          数据发送方收到接收方的通告窗口为0时,就不能再发送数据,一直等到对方发送窗口更新为止。但对端发送的窗口更新报文可能会丢失,如果发送方只是等待的话会导致数据传输会一...

    2015-04-10 10:35
    739
  • 9.5 尾部丢失探测(Tail Loss Probe)定时器

    9.5.1 Why         在9.4节中,我们了解到如果拥塞窗口较小且数据的最后一段数据丢失时,快速重传算法会因为无法收到足够数量的ACK而无法及时重传丢失的报文。尾部丢失探测(Tail Lo...

    2015-04-10 08:44
    1528
  • 9.4 ER(Early Retransmit)定时器

    9.4.1 Why

    2015-04-09 17:04
    885
  • 9.3 重传定时器

    9.3.1 Why         TCP在发送SYN、FIN以及数据包时为了保证可靠传输,会先将它们放入发送队列再发送副本到网络中,一旦发现数据丢失(比如连续收到多个ack_seq号相同的ACK)则...

    2015-04-09 10:49
    957
  • 9.2 SYN-ACK定时器

    9.2.1 Why   TCP服务器在收到SYN请求后发送SYN|ACK响应,然后等待对端的ACK到来以完成三次握手。如果没有收到ACK,TCP应该重传SYN|ACK,这个功能由SYN-ACK定时器...

    2015-04-09 08:57
    720
  • 9.1 定时器初始化

    TCP为每条连接先后设置9个定时器,分别为:重传定时器、丢失探测(LOSS_PROBE)定时器、早期重传(EARLY_RETRANS)定时器、SYN-ACK定时器、延迟ACK定时器、坚持定时器、保活定...

    2015-04-09 08:43
    601
  • 8.5 MD5选项

    8.5.1 选项功能   TCP MD5选项用于强化BGP协议的安全性,其基本原理是在TCP报文段的选项中携带MD5摘要。这个摘要的行为类似于这个报文的签名,其中包含这只有通信双方才能理解的信息。如...

    2015-04-08 16:26
    1109
  • 8.4 选择确认(SACK)选项

    TCP收到乱序数据后,会将其放入乱序队列中,然后发送重复ACK给对端。对端收到多个重复的ACK后,就会推测到可能发生了数据丢失,再重传数据。如果乱序的数据比较零散,则这种机制的效率会很低。使用SACK...

    2015-04-07 21:10
    2694
  • 8.3 时间戳(Time Stamp)选项

    在时间戳选项诞生之前,TCP有三个问题难以解决: (1)通信延迟RTT(Round Trip Time)测量    RTT对于拥塞控制是十分重要的(比如计算多长时间重传数据)。通常,测量RTT的方...

    2015-04-07 12:31
    3717

img博客搬家
img撰写博客
img发布 Chat
img专家申请
img意见反馈
img返回顶部