TCP/IP详解——阅读笔记

TCP/IP详解——阅读笔记

第一章:概述

框架:

* 应用层:FTP EMAIL
* 传输层:TCP UDP
* 网络层:IP
* 链路层:网卡

域名系统( D N S)

是一个分布的数据库,由它来提供 I P地址和主机名之间的映射信息

封装

TCP/IP详解——阅读笔记_第1张图片

分用

TCP/IP详解——阅读笔记_第2张图片

为协议I C M P和I G M P定位一直是一件很棘手的事情。在图1 - 4中,把它们与I P放在
同一层上,那是因为事实上它们是I P的附属协议。但是在这里,我们又把它们放在I P层
的上面,这是因为ICMP和IGMP报文都被封装在IP数据报中。

对于A R P和R A R P,我们也遇到类似的难题。在这里把它们放在以太网设备驱动程
序的上方,这是因为它们和I P数据报一样,都有各自的以太网数据帧类型。

端口号

  • 1~1023: 任何TCP/IP 知名的之间的端口号
  • 1024~5000之间: 大多数TCP/IP 临时分配的端口号

第2章 链 路 层

最大传输单元MTU

最大值是1500
如果IP层有一个数据报要传,而且数
据的长度比链路层的MTU还大,那么IP层就需要进行分片( f r a g m e n t a t i o n),把数据
报分成若干片,这样每一片都小于 M T U。

路径MTU

重要的是两台通信主机路径中的最小 M T U。它被称作路径MTU

第3章 IP:网际协议

  • 不可靠
  • 无连接

IP首部

TCP/IP详解——阅读笔记_第3张图片
* 目前的协议版本号是4
* 首部长度指的是首部占 32 bit字的数目,包括任何选项。由于它是一个 4比特字段,因此首部最长为6 0个字节
* 服务类型(TO S)字段包括一个3 bit的优先权子字段(现在已被忽略),4 bit的TO S子字
段和1 bit未用位但必须置0。
* 总长度字段是指整个 I P数据报的长度,以字节为单位。利用首部长度字段和总长度字段,就可以知道 I P数据报中数据内容的起始位置和长度。
* 标识字段唯一地标识主机发送的每一份数据报。通常每发送一份报文它的值就会加 1
* TTL(time-to-live)生存时间字段设置了数据报可以经过的最多路由器数。T T L的初始值由源主机设置(通常为 3 2或6 4),一旦经过一个处理它的路由器,它的值就减去 1。当该字段的值为 0时,数据报就被丢弃,并发送 I C M P报文通知源主机。
* 首部检验和: 检验IP首部。

IP路由选择

IP路由选择主要完成以下这些功能
1) 搜索路由表
2) 搜索路由表
3) 搜索路由表

第11章 UDP:用户数据报协议

UDP是一个简单的面向数据报的运输层协议:

进程的每个输出操作都正好产生一个UDP数据报,并组装成一份待发送的IP数据报


TCP/IP详解——阅读笔记_第4张图片

UDP首部

TCP/IP详解——阅读笔记_第5张图片

  • 端口号表示发送进程和接收进程
  • UDP长度字段指的是UDP首部和UDP数据的字节长度
  • UDP检验和: 覆盖UDP首部和UDP数据’

IP分片

任何时候I P层接收到一份要发送的 IP数据报时,它要判断向本地哪个接口发送数据(选路),并查
询该接口获得其MTU。IP把MTU与数据报长度进行比较,如果需要则进行分片。分片可以发
生在原始发送端主机上,也可以发生在中间路由器上

在分片时,除最后一片外,其他每一片中的数据部分(除 I P首部外的其余部分)必须是 8
字节的整数倍。在本例中, 1 4 8 0是8的整数倍

第14章 DNS:域名系统

域名系统(D N S)是一种用于 T C P / I P应用程序的分布式数据库,它提供主机名字和 I P地
址之间的转换及有关电子邮件的选路信息

第17章 TCP:传输控制协议

TCP提供一种面向连接的、可靠的字节流服务 .

T C P通过下列方式来提供可靠性:
• 应用数据被分割成T C P认为最适合发送的数据块。这和 U D P完全不同,应用程序产生的
数据报长度将保持不变。由 T C P传递给I P的信息单位称为报文段或段( s e g m e n t)(参见
图1 - 7)。在1 8 . 4节我们将看到T C P如何确定报文段的长度。
• 当T C P发出一个段后,它启动一个定时器,等待目的端确认收到这个报文段。如果不能
及时收到一个确认,将重发这个报文段。在第 2 1章我们将了解T C P协议中自适应的超时
及重传策略。
• 当T C P收到发自T C P连接另一端的数据,它将发送一个确认。这个确认不是立即发送,
通常将推迟几分之一秒,这将在 1 9 . 3节讨论。
• T C P将保持它首部和数据的检验和。这是一个端到端的检验和,目的是检测数据在传输
过程中的任何变化。如果收到段的检验和有差错, T C P将丢弃这个报文段和不确认收到
此报文段(希望发端超时并重发)。
• 既然T C P报文段作为I P数据报来传输,而 I P数据报的到达可能会失序,因此 T C P报文段
的到达也可能会失序。如果必要, T C P将对收到的数据进行重新排序,将收到的数据以
正确的顺序交给应用层。
• 既然I P数据报会发生重复,T C P的接收端必须丢弃重复的数据。
• T C P还能提供流量控制。 T C P连接的每一方都有固定大小的缓冲空间。 T C P的接收端只
允许另一端发送接收端缓冲区所能接纳的数据。这将防止较快主机致使较慢主机的缓冲
区溢出。

TCP的首部

TCP/IP详解——阅读笔记_第6张图片

TCP首部的数据格式,它通常是 2 0个字节

TCP/IP详解——阅读笔记_第7张图片

  • 每个T C P段都包含源端和目的端的端口号,用于寻找发端和收端应用进程。这两个值加
    上I P首部中的源端I P地址和目的端I P地址唯一确定一个T C P连接
  • 一个I P地址和一个端口号也称为一个插口( s o c k e t)。

第18章 TCP连接的建立与终止

  • 建立连接

    1) 请求端(通常称为客户)发送一个 S Y N段指明客户打算连接的服务器的端口,以及初
    始序号(I S N,在这个例子中为1 4 1 5 5 3 1 5 2 1)。这个S Y N段为报文段1。
    2) 服务器发回包含服务器的初始序号的 S Y N报文段(报文段2)作为应答。同时,将确认
    序号设置为客户的I S N加1以对客户的S Y N报文段进行确认。一个S Y N将占用一个序号。
    3) 客户必须将确认序号设置为服务器的 I S N加1以对服务器的S Y N报文段进行确认(报文
    段3)。
    这三个报文段完成连接的建立。这个过程也称为三次握手( three-way handshake)。
    
  • 终止连接

    建立一个连接需要三次握手,而终止一个连接要经过 4次握手。这由T C P的半关闭(h a l f -
    c l o s e)造成的。既然一个T C P连接是全双工(即数据在两个方向上能同时传递),因此每个方
    向必须单独地进行关闭。这原则就是当一方完成它的数据发送任务后就能发送一个 F I N来终止
    这个方向连接。当一端收到一个 F I N,它必须通知应用层另一端几经终止了那个方向的数据传
    送。发送F I N通常是应用层进行关闭的结果
    ![这里写图片描述](https://img-blog.csdn.net/20180701160522861?watermark/2/text/aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L211d2Vza3k=/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70)
    

第19章 TCP的交互数据流

TCP/IP详解——阅读笔记_第8张图片

  • 经受时延的确认

    通常T C P在接收到数据时并不
    立即发送A C K;相反,它推迟发送,以便将 A C K与需要沿该方向发送的数据一起发送(有时
    称这种现象为数据捎带 A C K)。绝大多数实现采用的时延为 200 ms,也就是说,T C P将以最大
    200 ms的时延等待是否有数据一起发送。
    
  • Nagle算法
    TCP/IP详解——阅读笔记_第9张图片

  • 窗口大小通告

第20章 TCP的成块数据流

  • 使用 TCP的滑动
    窗口协议时,接收方不必确认每一个收到的分组。在 T C P中,A C K是累积的—它们表示接
    收方已经正确收到了一直到确认序号减 1的所有字节

滑动窗口

TCP/IP详解——阅读笔记_第10张图片

PUSH标志

  • 发送方使用

    该标志通知接收方将所收到的数据全部提交给接收进程。这里的数据包括与 P U S H一起传送的
    数据以及接收方T C P已经为接收进程收到的其他数据。
    

慢启动

  • 该算法通过观察到新分组进入网络的速率应该与另一端返回确认的速率相同而进行工作。

    慢启动为发送方的T C P增加了另一个窗口:拥塞窗口 (congestion window),记为c w n d。当
    与另一个网络的主机建立 T C P连接时,拥塞窗口被初始化为 1个报文段(即另一端通告的报文
    段大小)。每收到一个 A C K,拥塞窗口就增加一个报文段( c w n d以字节为单位,但是慢启动
    以报文段大小为单位进行增加)。发送方取拥塞窗口与通告窗口中的最小值作为发送上限。拥
    塞窗口是发送方使用的流量控制,而通告窗口则是接收方使用的流量控制。
    
  • 发送方开始时发送一个报文段,然后等待 A C K。当收到该A C K时,拥塞窗口从1增加为2,
    即可以发送两个报文段。当收到这两个报文段的 A C K时,拥塞窗口就增加为 4。这是一种指数
    增加的关系。

成块数据的吞吐量

带宽时延乘积

可以计算通道的容量为:

c a p a c i t y (bit) = b a n d w i d t h (b/s) × ro u n d-trip time ( s )
一般称之为带宽时延乘积

拥塞

TCP/IP详解——阅读笔记_第11张图片

紧急方式

T C P提供了“紧急方式 ( u rgent mode)”,它使一端可以告诉另一端有些具有某种方式的
“紧急数据”已经放置在普通的数据流中。另一端被通知这个紧急数据已被放置在普通数据流
中,由接收方决定如何处理

第21章 TCP的超时与重传

T C P提供可靠的运输层。它使用的方法之一就是确认从另一端收到的数据。

T C P通过在发送时设置一个定时器来解决这种问题。如果当定时器溢出
时还没有收到确认,它就重传该数据。对任何实现而言,关键之处就在于超时和重传的策略,
即怎样决定超时间隔和如何确定重传的频率

对每个连接,T C P管理4个不同的定时器。
1) 重传定时器使用于当希望收到另一端的确认。在本章我们将详细讨论这个定时器以及
一些相关的问题,如拥塞避免。
2) 坚持( p e r s i s t )定时器使窗口大小信息保持不断流动,即使另一端关闭了其接收窗口。第
2 2章将讨论这个问题。
3) 保活( k e e p a l i v e )定时器可检测到一个空闲连接的另一端何时崩溃或重启。第 2 3章将描述
这个定时器。
4) 2MSL定时器测量一个连接处于 T I M E _ WA I T状态的时间。我们在 1 8 . 6节对该状态进行
了介绍。

拥塞避免算法

拥塞避免算法和慢启动算法是两个目的不同、独立的算法。但是当拥塞发生时,我们希
望降低分组进入网络的传输速率,于是可以调用慢启动来作到这一点。在实际中这两个算法
通常在一起实现。
拥塞避免算法和慢启动算法需要对每个连接维持两个变量:一个拥塞窗口 c w n d和一个慢
启动门限s s t h re s h。

这样得到的算法的工作过程如下:
TCP/IP详解——阅读笔记_第12张图片

快速重传与快速恢复算法

这个算法通常按如下过程进行实现:
1) 当收到第3个重复的A C K时,将s s t h re s h设置为当前拥塞窗口 c w n d的一半。重传丢失的
报文段。设置c w n d为s s t h re s h加上3倍的报文段大小。
2) 每次收到另一个重复的 A C K时,c w n d增加1个报文段大小并发送 1个分组(如果新的
c w n d允许发送)。
3) 当下一个确认新数据的A C K到达时,设置c w n d为s s t h re s h(在第1步中设置的值)。这个
A C K应该是在进行重传后的一个往返时间内对步骤 1中重传的确认。另外,这个 A C K也应该
是对丢失的分组和收到的第 1个重复的A C K之间的所有中间报文段的确认。这一步采用的是拥
塞避免,因为当分组丢失时我们将当前的速率减半。

重新分组

当T C P超时并重传时,它不一定要重传同样的报文段。相反, T C P允许进行重新分组而发
送一个较大的报文段,这将有助于提高性能

第22章 TCP的坚持定时器

我们已经看到 T C P通过让接收方指明希望从发送方接收的数据字节数(即窗口大小)来
进行流量控制。如果窗口大小为 0会发生什么情况呢?这将有效地阻止发送方传送数据,直到
窗口变为非0为止

如果一个确认丢失了,则双方就有可能因为等待对方而使连接终止:接收方等待接收数
据(因为它已经向发送方通告了一个非 0的窗口),而发送方在等待允许它继续发送数据的窗
口更新。

为防止这种死锁情况的发生,发送方使用一个坚持定时器 (persist timer)来周期性地
向接收方查询,以便发现窗口是否已增大。

服务器确认了前面 4个数据报文段,然后通告窗口为 0,从而使客户停止
发送任何其他的数据。这就引起客户设置其坚持定时器。如果在该定时器时间到时客户还没
有接收到一个窗口更新,它就探查这个空的窗口以决定窗口更新是否丢失。
  • 在连接的一方需要发送数据但对方已通告窗口大小为0时,就需要设置T C P的坚持定时器。发送
    方使用与第2 1章类似的重传间隔时间,不断地探查已关闭的窗口。这个探查过程将一直持续下去。

第24章 TCP的未来和性能

本章已经讨论了五个新的 T C P特征:路径M T U发现、窗口扩大选项、时间戳选项、序号
回绕保护以及使用改进的 T C P事务处理。

你可能感兴趣的:(网络)