TCP/IP详解 卷一 笔记

第01 章 概述

  • OSI 7层模型:
    物理层:指定连接器、数据速率和如何在某些介质上进行编码。本层也描述低层的差错检测和纠正、频率分配。
    链路层:指定经过单一链路通信的方法,包括多个系统共享同一介质时的“介质访问”控制协议。本层通常包括差错检测和链路层地址格式。
    网络层:指定经过潜在不同类型链路层网络的多跳通信方法。对于分组网络,它描述了抽象的分组格式和标准的编址结构。
    传输层:指定运行在相同计算机系统中多个程序之间的连接或关联的方法。如果在其他地方没有实现,本层可能实现可靠的传递。
    会话层:指定由多个连接组成一个通信绘画的方法。它可能包括关闭连接、重启连接和检查点进程。
    表示层:指定针对应用的数据表示格式和转换规则的方法。典型的例子如字符从EBCDIC转换为ASCⅡ码
    应用层:指定完成某些用户初始化任务的方法。应用协议通常由应用开发者设计和实现。

 

  • ARPANET参考模型:
    链路层(辅助):用于网络层到基于多接入链路层网络的链路层的地址映射的非正式的“层”。例如ARP。
    网络层:定义抽象的数据报和提供路由。IP、IPv6
    网络层(辅助):协助完成网络层设置、管理和安全的非正式的“层”。ICMP、IGMP、IPsec
    传输层:提供在抽象的、由应用管理的“端口”直接的数据交换。可能包括差错和流量控制。TCP、UDP、SCTP、DCCP
    应用层:实质上是Internet 兼容的任何应用。包括HTTP、DNS、DHCP

 

第02章 Internet 地址结构

  • IPv6:地址长度为128bit(是IPv4 32bit的4倍)。表示方法是采用称为块或字段的4个十六进制数,中间由冒号分割。例如:5f05:2000:80ad:5800:0058:0800:2023:1d71。

    1). 一些简化表示规则[RFC4291]:
    ①一个块中的前导0可以不必写。
    ②全0的块可以省略,并用::代替,但为避免歧义,一个IPv6地址中只能用一次:: 。
    ③IPv6中可以嵌入IPv4地址,紧接IPv4部分地址快的值应该是ffff,IPv4部分用IPv4的表达方法。被称为“IPv4映射的IPv6地址”。例如:::ffff:10.0.0.1
    ④IPv6地址的低32位通常用IPv4的表示方法。被称为“IPv4兼容的IPv6地址”(用于过渡)。例如:::1.2.240.1

    2).兼容上面规则的[RFC5952]:
    ①前导的0必须压缩。
    ②::只能用于影响最大的地方(压缩最多0)。但并不只针对16位的块,如果多个块中包含等长度的0,顺序靠前的块替换为::。
    ③a到f的十六进制数字,要用小写表示。

 

  • 分类寻址:
    最初的时候,每个单播IP地址有一个网络部分,用于识别接口使用的IP地址在哪个网络中可被发现;还有一个主机地址,识别网络部分给出的网络中的特定主机。
    基于当前或预计的主机数量,将不同大小的IP地址空间,分配给不同的站点。(P23分类图)

 

  • 子网寻址:
    在一个站点接入Internet 后为其分配一个网络号,然后由站点的管理员进一步划分本地的子网数。
    子网寻址为IP地址结构增加了一个额外部分,但没有为地址增加长度。因此,一个站点管理员可以在子网数和每个子网中预期的主机数之间折中。提高了灵活性。
    子网之前,之间由分类可以知道哪部分是主机号,哪部分是网络号(区分A\B\C类地址就好)。但现在需要子网掩码来区分。
  • 子网掩码:
    由一台主机或路由器使用的分配位,确定如果从一个IP地址中获得网络和子网信息。
    可以是静态的,也可以是动态的(DHCP)。
    IP地址和掩码按位与,得到网络/子网
    IP地址和取反的掩码按位与,得到主机号
    可变长度子网掩码(VLSM)

 

  • 广播地址
    子网广播地址构建方式:对子网掩码取反,然后和改子网内的IP地址按位或得到广播地址。

 

  • CIDR:
    不只是单个B类或C类网络号可以分给站点。使用CIDR,未经过预定义的任何地址范围可作为一个类的一部分,但需要一个类似于子网掩码的掩码,称为CIDR掩码。该掩码不再局限于一个站点,而是对全球性路由系统都是可见的。

 

第03章 链路层

  • PDU(Protocol Data Unit):协议数据单元是指对等层次之间传递的数据单位。
    物理层的 PDU是数据(bit)
    数据链路层的 PDU是数据(frame)
    网络层的PDU是数据包、分组(packet)
    传输层的 PDU是数据(segment)
    其他更高层次的PDU是报文(message)
  • 帧格式通常支持可变的的帧长度,范围从几字节到几千字节。范围的上限称最大传输单元(MTU)

 

  • 以太网:DEC、Intel、Xerox提出,IEEE(稍微修改)采纳为802.3标准。
  • CSMA/CD:冲突检测的载波侦听多路访问
    以太网中,多个站共享一个网络,需要在每个以太网接口实现一种分布式算法。
    波侦听:先检测目前网络上正在发送的信号,并在网络的空闲时发送自己的帧。
    冲突检测:如果其他站刚好正在同时发送,重叠的电信号被检测为一次冲突。冲突发生时,每个站等待一个随机时间,然后重发。如果在尝试一定次数(传统以太网16次)后还是冲突,表示超时。
    随机等待的时间的选择,会依据一个统一的概率分布,随后每个冲突检测到的时间长度加倍。
  • 像CSMA/CD这样的访问方式,更为正式的名称是:介质访问(MAC)协议。
  • 10BASE-T:双绞线以太网。T表示双绞线,10表示10Mbps,MAC协议是CSMA/CD。

 

  • 以太网帧格式(图P58)

    Preamble(前导码):用于接收方与发送方的同步,7个字节,每个字节的值固定为0xAA。

    SFD(start frame delimiter):帧起始定界符,用于标识一个以太网帧的开始,值固定为0xAB.

    DST 和 SRC: 分别表示标识目的地址源地址。它们均为6个字节长。
    如果传输出去的目标地址第一位是0,则表示这是一个普通地址;如果是1, 则表示这是一个组地址。

    Length/Type :通常这个字段用于指定报文头后所接的数据类型。
    通常使用的值包括:IPv4(0x0800),IPv6(0x86DD),ARP(0x0806)。而值0x8100代表一个Q-tagged 帧(802.1q)。
    通常一个基础的以太网帧长为1518字节,但是更多的新标准把这个值扩展为2000字节。

    MAC Client Data:数据主体,最小长度为48字节(加上帧头12字节,CRC4字节刚好64字节)。
    当数据主体小于48字节时,会添加pad字段。选取最小长度是出于冲突检测的考虑(CSMA/CD)。而数据字段最大长度为1502字节。

    FCS(Frame Check Sequence):也叫CRC(Cyclic Redundancy Check),CRC是差错检测码,用来确定接收到的帧比特是否正确。


    TCP/IP详解 卷一 笔记
  • 以太网帧有最小和最大尺寸:
    最小的帧是64字节,此时数据区长度最小是48字节。如果有效载荷实在很小,填充字节(0)到尾部保证达到最小长度。
    传统以太网的最大帧长度为:1518字节(包括4字节CRC,14字节头部)。因为MTU的大小限制为1500字节。
    为提高效率,有“以太网巨型帧”,通常允许帧尺寸高达9000字节。超级巨型帧还可以超过9000字节。但这些较大的帧无法和1518字节的互操作。

 

  • 交换机本质上是更高性能的网桥。IEEE 802.1d规定了网桥的操作。
    网桥或交换机用于连接多个物理的链路层网络或成组的站。
  • 每个网桥经过一定时间对域外MAC地址的“学习”后,会知道每个站可以由哪个端口到达。每个交换机基于每个端口的列表被存储在一张表中。
  • 无线局域网:IEEE 802.11(Wi-Fi)。

 

第04章 地址解析协议

  • 硬件交换的帧需要使用正确的硬件地址,定位到正确的接口,否则无法传输。而传统IPv4网需要使用IPv4地址。
  • 从一台主机将一个帧发送到另一台主机,仅仅知道这台主机的IP地址是不够的。还需要知道主机在网络中的有效硬件地址。
  • 对此,对于TCP/IP网络,地址解析协议(ARP):提供了一种在IPv4地址和各种网络技术使用的硬件地址之间的映射。
  • ARP仅用于IPv4。IPv6用的是邻居发现协议,它被合并进ICMPv6。
  • ARP提供从网络层地址到相关硬件地址的动态映射。
    动态:会自动执行和随时间变化,不需要系统管理员配置。
  • 仅在到达位于同一IP子网的系统时,ARP才能工作。

 

  • 如果10.0.0.1是一个远程地址,TCP尝试向远程主机发送一个连接请求(15章细讲)。
  • 如果地址10.0.0.1与发送主机有相同的网络前缀(子网号),数据报可以直接发送到该地址,不用经过任何路由器。
  • 通过ARP将32位的IPv4转位48位的以太网址。
  • 在一个共享的链路层网段上,ARP向所有主机发送一个称为ARP请求的以太网络帧。让地址为10.0.0.1的,回应它的MAC地址。
  • 同一广播域的所有系统都可以收到ARP请求,不管他们支不支持或者用的是IPv6。但不包括位于不同VLAN中的系统,即使支持。
  • 发送方收到ARP的应答后,开始发送数据。发送方将数据报封装在以太网帧中,直接发送到目的主机,用的是MAC地址。这时其他路由器或主机不会收到。并不需要经过路由器。

 

  • ARP帧格式(P116)

TCP/IP详解 卷一 笔记

 

第05章 Internet 协议

  • TCP、UDP、ICMP和IGMP数据,都是通过IP数据报传输。
  • IP是一种尽力而为、无连接的数据报交付服务。“尽力而为”也就是说,不保证IP数据报能成功到达目的地。
  • IP的任何可靠性,必须由上层去提供。(如TCP)
  • 无连接:意味着IP不维护网络单元中数据报相关的任何链接状态信息。也就意味着IP数据报可以不按顺序交付。

 

  • 隧道:将一个协议封装在另一个协议中。例如IP数据报可能被封装在另一个IP数据报的有效载荷部分。

 

1. IPv4数据报格式

  • 头部大小为20字节,除非存在选项(少见)。

TCP/IP详解 卷一 笔记

①版本号(version) 4bits

不同的IP协议版本使用不同的数据报格式。

②首部长度(IHL, Internet Head Length) 4bits

确定IP数据报中数据部分实际从哪里开始,包含可变数量的选项。若IP数据报没有包含选项,则IP数据报首部长度为20字节。

③服务类型(TOS, Type Of Service) 8bits

包含DS字段(6bits)ECN(显式拥塞通知字段)(2bits)

更好地服务不同类型IP数据报(如实时数据报IP电话应用、非实时通信流FTP),Cisco将TOS前3位标识不同服务等级,即优先级。

数据报长度(TL, Total Length)

④IP数据报长度,即首部+数据的长度(16bits)

⑤标识(16bits)、标志(3bits)、分片偏移(段位移)(13bits)

  • 这3个字段跟IP分片有关,当目的主机从同一个源收到一批数据报时,需要确定这些数据报是完整数据报还是分片后的数据报,数据报首部标识字段解决这个问题,检查数据报的标识号确定哪些数据报真正是同一个较大数据报的片。
  • 如何判断最后一个分片已收到,数据报首部标志字段解决这个问题,将最后一片的标志为0,其他标记为1。
  • 如何顺序重组这些片,这就需要记录每个片的在数据报有效净荷的偏移量,这也确定了片是否丢失。若丢失某些片,则丢弃这个不完整的数据报(不会交给传输层)。需要可靠传输怎么办呢,由传输层让源重传原始数据摄中的数据(如TCP)。

⑥生存期(TTL, Time To Live)(8bits)

每次数据报经过一台路由器时,该字段的值减1,若TTL字段减为0,则丢弃该数据报,从而确保数据报不会永远在网络循环。

建议为64,但128和255也不少见。

⑦上层协议(Protocol)(8bits)

该字段用于指明IP数据报的数据部分应该交给哪个传输层协议(6为TCP、17为UDP)。

⑧头部校验和(Header Checksum)(16bits)

只是对IP首部进行检验,对整个TCP/UDP报文段检验交由TCP/UDP完成。将首部中的每两个字节当作一个数,用反码运算对这些数求和,该和按1补码值存放在检查和字段。当路由器收到IP数据报时,计算其首部检查和,与该字段值比较,若出错则丢弃该数据报。

⑨源和目的IP地址(Source/Destination Address)(均为32bits)

⑩选项(Options)(任意,长度可变,最多320 bytes)

选项字段允许IP首部被扩展,由此导致数据报首部长度可变,故不能预先确定数据字段从何开始,同时也使路由器处理一个IP数据报所需时间差异很大(有的要处理选项,有的不需要)。

⑪数据(Data)(任意,长度可变,最多65515 bytes)

当使用TCP/UDP协议时,数据即为传输层报文段(TCP/UDP)。数据字段也可承载其他类型数据,如ICMP报文段。

虽然说最多是65515bytes,但多数链路层不能携带这么大的数据,需要分片。

 

2. IPv6数据报格式

  • 头部大小为40字节。
  • 那些由IPv4选项提供的特殊功能,通过在IPv6头部之后增加扩展头部实现。

TCP/IP详解 卷一 笔记

①版本号(version)(4bits)

不同的IP协议版本使用不同的数据报格式。

②通信量等级(Traffic Classes)(8bits)

包含DS字段(6bits)ECN(2bits)

使得源节点和路由器能够识别IPv6信息包的优先级。与IPv4服务类型TOS字段含义类似。

③流标签(Flow Label)(20bits)

标记那些需要IPv6路由器特殊处理(如一种非默认服务质量或实时服务)的信息包顺序。

④有效负载长度(Payload Length)(16bits)

定长40字节数据报首部后面的字节数量,包括扩展报头和负载数据,即数据报长度-40。

⑤下一个首部(Next Header)(8bits)

当IPv6没有扩展报头时,该字段的作用和IPv4的上层协议字段一样。当含有扩展报头时,该字段的值即为第一个扩展报头的类型。

⑥跳限制(Hop Limit)(8bits)

转发数据报的每台路由器对该字段的值减1,若减为0则丢弃该数据报。

⑦源和目的IP地址(Source/Destination Address)(均为128bits)

⑧数据(Data)

当数据报到达目的地时,该有效载荷就从IP数据报移出,并交给下一个首部字段中指定的协议。

 

  • IP转发:
    ①如果目的地是直接相连的主机或共享网络。IP数据报直接发送到目的地,不需要或不使用路由器。
    ②否则,主机将数据报发送到一台路由器(默认路由器),由该路由器将数据报交付到目的地。
  • 主机和路由器处理IP数据报的区别在于:主机不转发那些不是由它生成的数据报,但路由器会。
  • IP层包括一些位于内存中的信息,通常称为路由表或转发表,每次转发一个数据报时,需要从中查找信息。
  • 转发表:
    目的地IP:32bits的字段,用于与一个掩码操作结果相匹配。
    掩码:一个32bits的字段,与上面的IP进行按位与操作,结果和转发表条目中的多个目的地进行比较。
    下一跳:下一个IP实体的32位IPv4或128位IPv6地址。
    接口:包含一个由IP层使用的标识符,确定数据报发送到下一跳网络的接口。

 

第06章 系统配置:DHCP和自动配置

  • 为了使用TCP/IP协议族,每台主机和路由器都需要一定的配置信息。
    配置信息用于为系统指定本地名称,以及为接口指定标识符(如IP地址),还用于提供或使用各种网络服务。
    有多种方法可以提供和获得这种信息,基本上3种:手工获得信息,通过一个系统获得使用的网络服务,使用某种算法自动确定。
  • Internet客户端主机中用于建立基本要素的协议和程序:动态主机配置协议(DHCP)

 

  • DHCP是一种流行的 客户机/服务器协议,它用于为主机(有时也为路由器)指定配置信息。
  • DHCP端口:客户端用端口68,服务器用端口67。
  • DHCP主要是两个部分组成:地址管理和配置数据交付。
    地址管理:用于IP地址的动态分配,为客户机提供地址租用。
    配置数据交付:DHCP协议的消息格式、状态机。
  • 动态分配中,DHCP客户机请求分配一个IP地址。服务器从可用的地址池中选一个地址作为响应。分配给客户机的地址只在一段特定时间内有效,这段时间称租用期。可用提出延长租用期的要求。

 

第07章 防火墙和网络地址转换

  • 防火墙:一种能够限制所转发的流量类型的路由器。
  • 网络地址转换(Network Address Translation,NAT):使用它,互联网地址就不再需要是全球唯一的,可用在互联网的不同部分被重复使用。

 

  • 常用防火墙:代理防火墙、包过滤防火墙。
  • 包过滤防火墙:能够丢弃或转发数据包头中符合(或者不符合)特定标准的数据包。
  • 代理防火墙:这种防火墙通过一种代理(Proxy)技术参与到一个TCP连接的全过程。从内部发出的数据包经过这样的防火墙处理后,就好像是源于防火墙外部网卡一样,从而可以达到隐藏内部网结构的作用。这种类型的防火墙被网络安全专家和媒体公认为是最安全的防火墙。

 

第08章 ICMPv4 和 ICMPv6:Internet控制报文协议

  • IP协议本身没有为终端系统提供直接的方法来发现那些发送失败的数据包。为此有ICMP协议。
  • ICMP通常被认为是IP层的一部分,需要在所有IP实现中存在。它既不是一个网络层协议,也不是一个传输层协议,而是位于两者之间。
  • ICMP不为IP网络提供可靠性,它仅仅表明了某些类别的故障和配置信息。最常见的丢包并不会触发任何ICMP信息。
  •  IPv4中,协议字段值为1表示该报文携带了ICMPv4。
  • ICMP报文可分两类:①有关IP数据报传递的ICMP报文(称为差错报文) ②有关信息采集和配置的ICMP报文(称为 查询或者信息类报文
  • ICMP查询/信息类报文:
    回显请求/应答(ping)(v4、v6)
    路由器发现:路由器请求和通告(v4)
    本地代理地址发现请求/应答(v6)
    移动前缀请求/通告(v6)
    移动IPv6快速切换报文(v6)
    组播侦听查询/报告/完成(v6)
    版本2组播侦听发现(v6)
    组播路由器发现(v6)

 

第09章 广播和本地组播(IGMP和MLD)

  • 有4种IP地址:单播(unicast)、任播(anycast)、组播(multicast)、广播(broadcast)。
  • 组播和广播为应用程序提供的两个服务:
    数据分组交付至多个目的地:如互动式会议、邮件等需要将信息交付多个收件方的应用。
    通过客户端请求服务器:应用程序可以向一个服务器发送一个请求,而不用知道任何特定服务器的IP地址。

 

  • 组播:减少在广播中涉及的开销,可以只向那些对它感兴趣的接收方发送流量。
  • 组播状态(multicast state)必须由主机和路由器来保持。

 

第10章 用户数据报协议和IP分片

  • UDP:一种保留消息边界的简单的面向数据报的传输层协议。不提供差错纠正、队列管理、重复消除、流量控制、拥塞控制。只提供差错检测。因为它无连接的特征,比其他的传输协议使用更少的开销。

TCP/IP详解 卷一 笔记

TCP/IP详解 卷一 笔记

 

  • UDP数据报长度:
    一个IPv4最大长度是65535字节,去掉20字节不带选项的IPv4头部和一个8字节的UDP头部,UDP用户数据的最大字节为65507。
    对于IPv6,假设没用超长数据报,16位负载长度字段可允许655527字节的有效UDP负载。

 

第11章 名称解析和域名系统

  • 互联网支持使用主机名称(host names)来识别包括客户机和服务器在内的主机。
  • 主机名称通过 名称解析(name resolution) 的过程转换成IP地址。
  • 最普遍、最重要的名称解析是一种采用分布式数据库系统,即DNS(域名系统)。
  • DNS是一个分布式的 客户机/服务器 网络数据库,TCP/IP应用程序用它来完成主机名称和IP地址间的映射(反之亦然)。
  • 分布式:互联网中没有单独的一个站点,可以知道所有的信息。每个站点维护自己的信息数据库,并运行一个服务器程序供互联网上的其他系统查询。

 

  • DNS中使用的所有名称集合构成了DNS名称空间。这个名称空间划分为层次,大小写不敏感。
  • 当前的DNS名称空间是一颗域名树,位于顶部的树根未命名。
    树的最高层是所谓的*域名(TLD):包括通用*域名(gTLD)、国家代码*域名(ccTLD)、国际化国家代码*域名(IDN ccTLD)、以及历史原因存在的基础设施*域名(infrastructure TLD)。
    gTLD:edu、gov、int等
    ccTLD:两个字母的国家代码
  • TLD下面的名称进一步划分成组,称为子域名(subdomain)。
  • 一个域名包含一系列由点分开的标签,名称代表名称曾经中的一个位置。例如:www.net.in.tum.de
    包含一个在4级深度域名(net.in.tum.de)中的主机名称标签(www)。
    TLD是de
    tum是德国一个大学缩写(慕尼黑工业大学)
    in是德语中计算机科学缩写
    net是计算机科学系中网络组的缩写

 

  • 部分DNS名称空间的管理责任分配给个人或组织。
  • 管理授权的单位称为区域(zone),一个区域是DNS名称空间的一颗子树。
  • 一台DNS服务器可以包含多个区域的信息。
  • 区域信息应该至少存在于两个地方,意味着至少应该有两台服务器包含每个区域的信息。

 

  • 名称服务器包含如名称到IP的映射信息,可以从三个途径获取:①直接来自于区域数据库 ②区域传输的结果(如一个从属服务器) ③来自于在处理解析过程中的另一台服务器。
  • 每个DNS记录都有自己的TTL,控制自己缓存的时间。
  • 缓存同时适用于成功的解析和不成功的解析。

 

  • DNS协议组成的两个部分:①用于执行对DNS特定名称查询的 查询/响应协议 ②名称服务器用于交换数据库记录的协议。
  • 例子:
    一台名为A.HOME的笔记本电脑,在DNS服务器GW.HOME附近。HOME是私有的,互联网不知道它的存在。想要连接EXAMPLE.COM的主机。

    假设它不知道EXAMPLE.COM的IP(除非它最近访问过),它会先向本地服务器GW.HOME发送请求,请求将EXAMPLE.COM转为一个IP地址。如果GW.HOME也不知道其IP,也不知道其名称服务器,会转发查询到另一个DNS服务器(递归),直到找到。

 

  • 对于TCP和UDP,DNS的知名端口号都是53。DNS消息通常封装在UDP/IPv4数据报中。
     

第12章 TCP:传输控制协议(初步)

  • ARQ:automatic repeat request,自动重传请求
  • 判断接收方是否已经收到分组,判断接收方收到的是否和发送方发送的一样:通过ACK。
    发送方发送并等待ACK,收到后再发送另一个分组,再等待ACK。
    引发了这些问题:应该等一个ACK多久?ACK丢了怎么办?如果分组收到,但有错怎么办?

 

  • 分组窗口:作为已发送、但还未被确认的的分组的集合。窗口中的分组数量称为窗口大小。
  • 例如有序号为:……3 4 5 6 7……的发送序列。3是已发送并确认的,4 5 6是已发送未确认的,7是未发送的。
    此时窗口大小为3,等收到4的ACK时,可以发送7,此时窗口向右滑动一格。这称为“滑动窗口”。

 

  • TCP提供一种面向连接的、可靠的字节流服务。
  • TCP会将要发送的字节流,转换成一组IP可携带的分组,称为组包。分组包里包含序号。这允许分组在传送中大小是可变的,并且允许他们重新组合。
  • 当TCP发送一组报文段时,会设置一个重传计时器,等待对方的确认接收。TCP不会为每个报文段都设置一个不同的计时器。发送一个窗口的数据,只设置一个计时器。当ACK到达时再更新超时。
    如果有一个确认超时未收到,这个报文段会重传。
  • TCP使用的ACK是累积的,一个指示字节号是N的ACK,表示直到(不包括N)N的所有字节都被成功接收了。
    (这种情况下,如果一个ACK丢失,后续的ACK可以确认前面的报文段)

TCP/IP详解 卷一 笔记

TCP/IP详解 卷一 笔记

  • ***(sequence number):***标识了TCP发送端到TCP接收端的数据流的第一个字节。***是一个32位的无符号数,到达2^32-1后再回到0。因为每个被交换的字节都编号了,所以ACK是期待接收的下一个***。
    TCP各个报文段的顺序是用一个***来保证的。响应包内也包括一个***,表示接收方准备好这个***的包。
  • 英文字母含义:
    CWR:拥塞窗口减(16章)
    ECE:ECN回显(16章)
    URG:紧急(紧急指针有效)(15章)
    ACK:确认号字段有效标志(13和15章)
    PSH:推送(15章)
    RST:重置连接(连接取消)
    SYN:用于初始化一个连接的同步***
    FIN:结束一个连接

 

第13章 TCP连接管理

  • 详情可见:TCP的三次握手和四次挥手。图中前面有SYN和ACK,等地方,是表示上一章图中的标志位为1。而后面的ACK代表32bits的确认号,Seq代表32bits的***。

TCP/IP详解 卷一 笔记

  • MTU(路径最大传输单元):指经过两台主机之间路径的所有网络报文段中最大传输单元 的最小值。

 

第14章 TCP超时与重传

  • 快重传机制:基于接收端的反馈信息来引发重传,而非重传计时器的超时。快重传能更加及时有效地修复丢包情况。
  • 伪超时:过早判定超时,会造成没有出现数据丢失也可能引发重传,称为伪重传。

 

  • 如果失序发生在反向链路(即ACK回传),就会使得TCP发送端口快速前移,接着又可能收到一些显然重复而应被丢弃的ACK。这种情况下会导致发送端出现不必要的流量突发(即瞬时的高速发送),影响网络可用带宽。
  • 如果失序发生在正向链路,TCP可能无法正确识别失序和丢包。当失序程度不是很大,这种情况可用迅速得到处理。当出现严重失序时,TCP会误认为数据已经丢失。

 

第15章 TCP数据流与窗口管理

  • 通常90%或者更多的TCP报文段都包含大批量数据(如文件共享、电子邮件等);其余部分则包含交互式数据(如远程登录、网络游戏)。
    批量数据段通常较大(1500字节或更大),而交互式数据段会比较小(几十字节的用户数据)。
    对使用相同协议的数据,TCP都会处理,但执行的算法有所不同。
  • 在ssh连接中,从客服端到服务器键入的每个字符都会生成一个独立的包。如果用户键入的速度较快,每个包可能包含多个字符。

 

  • 对于ssh,如果用IPv4,一次键会产生88字节大小的包(20字节IP头,20字节TCP头,48字节数据)。这些小包会造成相当高的网络传输代价。对广域网来说可能会加重拥塞,严重影响网络性能。为此提出Nagle算法。
  • Nagle算法要求,当一个TCP连接中有在传数据(即已发送、未确认数据),小的报文段(长度小于SMSS)就不能被发送,直到所有的在传数据收到ACK。并且收到ACK后,TCP会收集这些小数据,将其整合到一个报文段中发送。
  • 有些情况下并不适用Nagle算法,例如要求时延尽量小的应用。如网络游戏,人物的动作需要及时地传送,远程控制中键鼠操作需要及时送达和得到快速反馈。

 

  • TCP以字节(而非包)为单位来维护其窗口结构,每个TCP活动连接的两端维护一个发送窗口和接收窗口结构。
  • 发送窗口:有三个术语用于描述窗口左右边界运动
    ①关闭:窗口左边界右移。当已发送的数据收到ACK时发生,窗口减小。
    ②打开:窗口右边界右移,可发送数据量增大。当ACK时,确认数据得到处理,接收端可用缓存变大时发生,窗口也变大。
    ③收缩:窗口右边界左移。

TCP/IP详解 卷一 笔记

  • 接收窗口:比发送窗口简单。用于记录已接收并确认过的数据、能够接收的最大***。

TCP/IP详解 卷一 笔记

 

第16章 TCP拥塞控制

  • 拥塞:路由器因为无法处理高速率到达的流量(接收速率大于发送速率),而*丢弃数据信息的现象。
  • 拥塞控制:防止网络因为大规模的通信负载而瘫痪。基本方法是当有理由认为网络即将进入拥塞状态(或者已经有由于拥塞而出现路由器丢包情况)时,减缓TCP传输。
  • TCP拥塞控制的难点:判断什么时候需要减缓和如何减缓TCP传输、什么时候恢复其原有速度。
  • 典型的TCP:用丢包作为判断拥塞发生与否的指标,衡量是否实施相应的措施。

 

  • 怎么减缓TCP发送:拥塞窗口。发送端实际可用的窗口:接收端通知窗口(上一章中的发送窗口)和拥塞窗口中的较小者。

 

第17章 TCP保活机制

  • 如果TCP连接的双方都不向对方发送数据,那么TCP连接两端就不会有任何数据交换。(理论上,中间路由器可用崩溃重启、数据线可用断开再连接,只要两端主机没有重启或换IP,连接状态会一直保持)。
  • 服务器应用程序希望知道客户主机是否崩溃或离开,从而决定是否为客户绑定资源。利用TCP的保活功能,来探测离开的主机。
  • 保活功能在默认情况下是关闭的。

 

第18章 安全