tcpip协议详解卷一(tcpip协议详解卷一机械工业出版社)

      最后更新:2024-03-31 13:45:15 手机定位技术交流文章

      TCP-IP详解卷1:协议读书笔记_11

      UDP是一个简单的面向数据报的传输层协议:进程的每个输出操作都正好产生一个UDP数据报,并组装成一份待发送的IP数据报。这与面向流字符的协议不同,如TCP,应用程序产生的全体数据与真正发送的单个IP数据报可能没有什么联系。 UDP数据报封装成一份IP数据报的格式如下图:UTP不提供可靠性:它把应用程序传给IP层的数据发送出去,但是并不保证它们能到达目的地。应用程序必须注意IP数据报的长度。如果它超过网络MTU(最大传输单元),那么就要对IP数据报进行分片。如果需要源端到目的端的每个网络都要进行分片,并不只是发送端主机连接第一个网络才这样做。首部结构如下图:端口号表示发送进程和接受进程,由于IP层已经把IP数据报分配给TCP或UDP(根据IP首部中协议字段值),因此TCP端口号由TCP来查看,而UDP端口号由UDP来查看。TCP端口号与UDP端口号是相互独立的。UDP长度字段指的是UDP首部和UDP数据的字节长度。该字段的最小值为8字节(发送一份0字节的UDP数据报是OK的)。这个UDP长度是有冗余的,IP数据报长度指的是数据报全长,因此UDP数据报长度等于IP数据报长度减去IP首部的长度。UDP校验和覆盖UDP首部和UDP数据。回想IP首部的校验和,它只覆盖IP的首部----并不覆盖IP数据报的任何数据。UDP和TCP在首部都有覆盖它们首部和数据的校验和。UDP校验和是可选的,而TCP的校验和是必需的。尽管U D P检验和的基本计算方法与我们之前第三节中描述的IP首部检验和计算方法相类似(16bit字的二进制反码和),但是它们之间存在不同的地方。首先,UDP数据报的长度可以为奇数字节,但是检验和算法是把若干个16bit字相加。解决方法是必要时在最后增加填充字节0,这只是为了检验和的计算(也就是说,可能增加的填充字节不被传送)。如果发送端没有计算检验和而接收端检测到检验和有差错,那么UDP数据报就要被悄悄地丢弃。不产生任何差错报文(当IP层检测到IP首部检验和有差错时也这样做)。UDP检验和是一个端到端的检验和。它由发送端计算,然后由接收端验证。其目的是为了发现UDP首部和数据在发送端到接收端之间发生的任何改动。物理网络层一般要限制每次发送数据帧的最大长度。任何时候IP层接收到一份要发送的IP数据报时,它要判断向本地哪个接口发送数据(选路),并查询该接口获得其MTU。IP把MTU与数据报长度进行比较,如果需要则进行分片。分片可以发生在原始发送端主机上,也可以发生在中间路由器上。把一份IP数据报进行分片以后,只有到达目的地才进行重新组装(这里的重新组装与其他网络协议不同,它们要求在下一站就进行重新组装,而不是在最终目的地)。重新组装由目的端的IP层来完成,其目的是使分片和重新组装过程对传输层(TCP和UDP)是透明的。已经分片过得数据报可能会再次进行分片,IP首部中包含的数据为分片和重新组装提供了足够的信息。对于发送端发送的每份IP数据报来说,其标识字段都包含一个唯一值。该值在数据报分片时被复制到每个片中。标志字段其中一个比特来表示"更多的片"。除了最后一片外,其他每个组成数据报的片都要把比特置1。片偏移字段指的是该片偏移原始数据报开始处的位置。另外,当数据报被分片后,每个片的总长度值要改为该片的长度值。最后,标志字段中有一个比特称作“不分片”位。如果将这一比特置1,IP将不对数据报进行分片。相反把数据报丢弃并发送一个ICMP差错报(“需要进行分片但设置了不分片比特”)给起始端。当IP数据报被分片后,每一片都成为一个分组,具有自己的IP首部,并在选择路由时与其他分组独立。这样,当数据报的这些片到达目的端时可能会失序,但是在IP首部中有足够的信息让接收端能正确组装这些数据报片。IP分片有一个问题:丢失掉一片数据也要重新传输整个数据报。原因:IP层没有超时重传机制---由更高层负责超时和重传。当来自TCP报文段的某一片丢失后,TCP超时会重发整个TCP报文段,该报文段对应于一份IP数据报。没有办法重传数据报中的一个数据报片。使用UDP很容易导致IP分片。下图是UDP分片示例:发现ICMP不可达差错的另一种情况是,当路由器收到一份需要分片的数据报,而在IP首部又设置了不分片(DF)的标志比特。如果某个程序需要判断到达目的端的路途中最小MTU是多少----称作路径MTU发现机制,那么这个差错就可以被该程序使用。这个情况下ICMP不可达差错报文格式如下图:如果路由器没有提供这种新的ICMP差错报文格式,那么下一站的MTU就为0。理论上,IP数据报的最大长度是65535字节,这是由IP首部16比特总长度字段所限制的。去除20字节的IP首部和8个字节的UDP首部,UDP数据报中用户数据的最长长度为65507字节。但是,大多数实现所提供的长度比这个最大值小。其中有两个限制因素:1.应用程序可能会受到其程序接口的限制。socket API提供了一个可供应用程序调用的函数,以设置接收和发送缓存的长度。对于UDP socket,这个长度与应用程序可以读写的最大UDP数据报的长度直接相关。2.第二个限制来自于TCP/IP的内核实现。可能存在一些实现特性(或差错),是IP数据报长度小于65535字节。我们同样可以使用UDP缠上ICMP"源站抑制"差错。当一个系统(路由器或主机)接受数据报的速度比其处理速度快时,可能产生这个差错。当在以太网传播的数据需要经过SLIP链路时,可能产生该差错报文。因为SLIP链路的速度大约只有以太网的千分之一,所以,很容易使其缓存用完。在本例中,应用程序要么没有接收到源站抑制差错信号,要么接收到却将其忽略了。结果是如果采用UDP协议,那么BSD实现通常忽略其接收到的源站抑制报文。其部分原因在于,在接收到源站抑制差错报文时,导致源站抑制的进程可能已经中止了。不处理ICMP源站抑制差错,说明了UDP是一个非可靠的协议,它只控制端到端的流量控制。除非在应用程序中建立一些应答机制,否则发送端并不知道接收端是否收到了这些数据。来自客户的是UDP数据报。IP首部包含源端和目的端IP地址,UDP首部包含了源端和目的端的UDP端口号。当一个应用程序接收到UDP数据报时,操作系统必须告诉它是谁发送了这份消息,即源IP地址和端口号。这个特性允许一个交互UDP服务器对多个客户进行处理。给每个发送请求的客户发回应答。一些应用程序需要知道数据报是发给谁的,即目的地址。这要求操作系统从接收到的UDP数据报中将目的IP地址交给应用程序。大多数UDP服务器是交互服务器,单个服务器进程对单个UDP端口上的所有客户请求进行处理。通常程序所使用的每个UDP端口都与一个有限大小的输入队列向联系。这意味着,来自不同客户的差不多同时到达的请求将有UDP自动排队。接收到UDP数据报以其接收顺序交给应用程序。因此,由于队列溢出导致的UDP数据报的丢失不可避免。应用程序不知道其输入队列什么时候会溢出,只能有UDP对超出数据报进行丢弃处理。同时,不会发挥任何消息告诉客户其数据报被丢弃。大多数UDP服务器在创建UDP端点时都使其本地IP地址具有通配符的特点。这表明进入的UFP数据报如果其目的地为服务端端口,那么任何本地接口均可接收到它。大多数系统允许UDP端点对远端地址进行限制。下面是UDP服务器本身可以创建的三类地址绑定:在所有情况下,lport指的是服务器有名端口号,localIP必须是本地接口的IP地址。表中这三行的排序是UDP模块在判断用哪个端点接收数据报时所采用的顺序。最为确定的地址(第一行)首先被匹配,最不确定的地址(最后一行IP地址带有两个星号)最后进行匹配。当UDP数据报到达的目的IP地址为广播地址或多播地址,而且在目的IP地址和端口号处有多个端点时,就向每个端点传送一份数据报的复制(端点的本地IP地址可以含有星号,它可匹配任何目的IP地址)。但是,如果UDP数据报到达的是一个单播地址,那么只向其中一个端点传送一份数据报的复制。选择哪个端点传送数据取决于各个不同的系统实现。UDP是一个简单协议。它想用户进程提供的服务位于IP层之上,包括端口号和可选的校验和,我们用UDP老检查校验和并观察分片是如何进行的。 当系统接收IP数据报的速率超过这些数据报被处理的速率时,系统可能发送ICMP源站抑制差错报文。使用UDP时很容易产生这样的ICMP差错。
      TCP-IP详解卷1:协议读书笔记_11

      TCP/IP详解卷1:协议的作品目录

      译者序前言第1章 概述11.1 引言11.2 分层11.3 TCP/IP的分层41.4 互联网的地址51.5 域名系统61.6 封装61.7 分用81.8 客户-服务器模型81.9 端口号91.10 标准化过程101.11 RFC101.12 标准的简单服务111.13 互联网121.14 实现121.15 应用编程接口121.16 测试网络131.17 小结13第2章 链路层152.1 引言152.2 以太网和IEEE 802封装152.3 尾部封装172.4 SLIP:串行线路IP172.5 压缩的SLIP182.6 PPP:点对点协议182.7 环回接口202.8 最大传输单元MTU212.9 路径MTU212.10 串行线路吞吐量计算212.11 小结22第3章 IP:网际协议243.1 引言243.2 IP首部243.3 IP路由选择273.4 子网寻址303.5 子网掩码323.6 特殊情况的IP地址333.7 一个子网的例子333.8 ifconfig命令353.9 netstat命令363.10 IP的未来363.11 小结37第4章 ARP:地址解析协议384.1 引言384.2 一个例子384.3 ARP高速缓存404.4 ARP的分组格式404.5 ARP举例414.5.1 一般的例子414.5.2 对不存在主机的ARP请求424.5.3 ARP高速缓存超时设置434.6 ARP代理434.7 免费ARP454.8 arp命令454.9 小结46第5章 RARP:逆地址解析协议475.1 引言475.2 RARP的分组格式475.3 RARP举例475.4 RARP服务器的设计485.4.1 作为用户进程的RARP服务器495.4.2 每个网络有多个RARP服务器495.5 小结49第6章 ICMP:Internet控制报文协议506.1 引言506.2 ICMP报文的类型506.3 ICMP地址掩码请求与应答526.4 ICMP时间戳请求与应答536.4.1 举例546.4.2 另一种方法556.5 ICMP端口不可达差错566.6 ICMP报文的4.4BSD处理596.7 小结60第7章 Ping程序617.1 引言617.2 Ping程序617.2.1 LAN输出627.2.2 WAN输出637.2.3 线路SLIP链接647.2.4 拨号SLIP链路657.3 IP记录路由选项657.3.1 通常的例子667.3.2 异常的输出687.4 IP时间戳选项697.5 小结70第8章 Traceroute程序718.1 引言718.2 Traceroute 程序的操作718.3 局域网输出728.4 广域网输出758.5 IP源站选路选项768.5.1 宽松的源站选路的traceroute程序示例788.5.2 严格的源站选路的traceroute程序示例798.5.3 宽松的源站选路traceroute程序的往返路由808.6 小结81第9章 IP选路839.1 引言839.2 选路的原理849.2.1 简单路由表849.2.2 初始化路由表869.2.3 较复杂的路由表879.2.4 没有到达目的地的路由879.3 ICMP主机与网络不可达差错889.4 转发或不转发899.5 ICMP重定向差错899.5.1 一个例子909.5.2 更多的细节919.6 ICMP路由器发现报文929.6.1 路由器操作939.6.2 主机操作939.6.3 实现939.7 小结94第10章 动态选路协议9510.1 引言9510.2 动态选路9510.3 Unix选路守护程序9610.4 RIP:选路信息协议9610.4.1 报文格式9610.4.2 正常运行9710.4.3 度量9810.4.4 问题9810.4.5 举例9810.4.6 另一个例子10010.5 RIP版本210210.6 OSPF:开放最短路径优先10210.7 BGP:边界网关协议10310.8 CIDR:无类型域间选路10410.9 小结105第11章 UDP:用户数据报协议10711.1 引言10711.2 UDP首部10711.3 UDP检验和10811.3.1 tcpdump输出10911.3.2 一些统计结果10911.4 一个简单的例子11011.5 IP分片11111.6 ICMP不可达差错(需要分片)11311.7 用Traceroute确定路径MTU11411.8 采用UDP的路径MTU发现11611.9 UDP和ARP之间的交互作用11811.10 最大UDP数据报长度11911.11 ICMP源站抑制差错12011.12 UDP服务器的设计12211.12.1 客户IP地址及端口号12211.12.2 目标IP地址12211.12.3 UDP输入队列12211.12.4 限制本地IP地址12411.12.5 限制远端IP地址12511.12.6 每个端口有多个接收者12511.13 小结126第12章 广播和多播12812.1 引言12812.2 广播12912.2.1 受限的广播12912.2.2 指向网络的广播12912.2.3 指向子网的广播12912.2.4 指向所有子网的广播13012.3 广播的例子13012.4 多播13212.4.1 多播组地址13312.4.2 多播组地址到以太网地址的转换13312.4.3 FDDI和令牌环网络中的多播13412.5 小结134第13章 IGMP:Internet组管理协议13613.1 引言13613.2 IGMP报文13613.3 IGMP协议13613.3.1 加入一个多播组13613.3.2 IGMP报告和查询13713.3.3 实现细节13713.3.4 生存时间字段13813.3.5 所有主机组13813.4 一个例子13813.5 小结141第14章 DNS:域名系统14214.1 引言14214.2 DNS基础14214.3 DNS的报文格式14414.3.1 DNS查询报文中的问题部分14614.3.2 DNS响应报文中的资源记录部分14714.4 一个简单的例子14714.5 指针查询15014.5.1 举例15114.5.2 主机名检查15114.6 资源记录15214.7 高速缓存15314.8 用UDP还是用TCP15614.9 另一个例子15614.10 小结157第15章 TFTP:简单文件传送协议15915.1 引言15915.2 协议15915.3 一个例子16015.4 安全性16115.5 小结162第16章 BOOTP: 引导程序协议16316.1 引言16316.2 BOOTP的分组格式16316.3 一个例子16416.4 BOOTP服务器的设计16516.5 BOOTP穿越路由器16716.6 特定厂商信息16716.7 小结168第17章 TCP:传输控制协议17017.1 引言17017.2 TCP的服务17017.3 TCP的首部17117.4 小结173第18章 TCP连接的建立与终止17418.1 引言17418.2 连接的建立与终止17418.2.1 tcpdump的输出17418.2.2 时间系列17518.2.3 建立连接协议17518.2.4 连接终止协议17718.2.5 正常的tcpdump输出17718.3 连接建立的超时17818.3.1 第一次超时时间17818.3.2 服务类型字段17918.4 最大报文段长度17918.5 TCP的半关闭18018.6 TCP的状态变迁图18218.6.1 2MSL等待状态18318.6.2 平静时间的概念18618.6.3 FIN_WAIT_2状态18618.7 复位报文段18618.7.1 到不存在的端口的连接请求18718.7.2 异常终止一个连接18718.7.3 检测半打开连接18818.8 同时打开18918.9 同时关闭19118.10 TCP选项19118.11 TCP服务器的设计19218.11.1 TCP服务器端口号19318.11.2 限定的本地IP地址19418.11.3 限定的远端IP地址19518.11.4 呼入连接请求队列19518.12 小结197第19章 TCP的交互数据流20019.1 引言20019.2 交互式输入20019.3 经受时延的确认20119.4 Nagle算法20319.4.1 关闭Nagle算法20419.4.2 一个例子20519.5 窗口大小通告20719.6 小结208第20章 TCP的成块数据流20920.1 引言20920.2 正常数据流20920.3 滑动窗口21220.4 窗口大小21420.5 PUSH标志21520.6 慢启动21620.7 成块数据的吞吐量21820.7.1 带宽时延乘积22020.7.2 拥塞22020.8 紧急方式22120.9 小结224第21章 TCP的超时与重传22621.1 引言22621.2 超时与重传的简单例子22621.3 往返时间测量22721.4 往返时间RTT的例子22921.4.1 往返时间RTT的测量22921.4.2 RTT估计器的计算23121.4.3 慢启动23321.5 拥塞举例23321.6 拥塞避免算法23521.7 快速重传与快速恢复算法23621.8 拥塞举例(续)23721.9 按每条路由进行度量24021.10 ICMP的差错24021.11 重新分组24321.12 小结243第22章 TCP的坚持定时器24522.1 引言24522.2 一个例子24522.3 糊涂窗口综合症24622.4 小结250第23章 TCP的保活定时器25123.1 引言25123.2 描述25223.3 保活举例25323.3.1 另一端崩溃25323.3.2 另一端崩溃并重新启动25423.3.3 另一端不可达25423.4 小结255第24章 TCP的未来和性能25624.1 引言25624.2 路径MTU发现25624.2.1 一个例子25724.2.2 大分组还是小分组25824.3 长肥管道25924.4 窗口扩大选项26224.5 时间戳选项26324.6 PAWS:防止回绕的序号26524.7 T/TCP:为事务用的TCP扩展26524.8 TCP的性能26724.9 小结268第25章 SNMP:简单网络管理协议27025.1 引言27025.2 协议27025.3 管理信息结构27225.4 对象标识符27425.5 管理信息库介绍27425.6 实例标识27625.6.1 简单变量27625.6.2 表格27625.6.3 字典式排序27725.7 一些简单的例子27725.7.1 简单变量27825.7.2 get-next操作27825.7.3 表格的访问27925.8 管理信息库(续)27925.8.1 system组27925.8.2 interface组28025.8.3 at组28125.8.4 ip组28225.8.5 icmp组28525.8.6 tcp组28525.9 其他一些例子28825.9.1 接口MTU28825.9.2 路由表28825.10 trap29025.11 ASN.1和BER29125.12 SNMPv229225.13 小结292第26章 Telnet和Rlogin:远程登录29326.1 引言29326.2 Rlogin协议29426.2.1 应用进程的启动29526.2.2 流量控制29526.2.3 客户的中断键29626.2.4 窗口大小的改变29626.2.5 服务器到客户的命令29626.2.6 客户到服务器的命令29726.2.7 客户的转义符29826.3 Rlogin的例子29826.3.1 初始的客户-服务器协议29826.3.2 客户中断键29926.4 Telnet协议30226.4.1 NVT ASCII30226.4.2 Telnet命令30226.4.3 选项协商30326.4.4 子选项协商30426.4.5 半双工、一次一字符、一次一行或行方式30426.4.6 同步信号30626.4.7 客户的转义符30626.5 Telnet举例30626.5.1 单字符方式30626.5.2 行方式31026.5.3 一次一行方式(准行方式)31226.5.4 行方式:客户中断键31326.6 小结314第27章 FTP:文件传送协议31627.1 引言31627.2 FTP协议31627.2.1 数据表示31627.2.2 FTP命令31827.2.3 FTP应答31927.2.4 连接管理32027.3 FTP的例子32127.3.1 连接管理:临时数据端口32127.3.2 连接管理:默认数据端口32327.3.3 文本文件传输:NVT ASCII表示还是图像表示32527.3.4 异常中止一个文件的传输:Telnet同步信号32627.3.5 匿名FTP32927.3.6 来自一个未知IP地址的匿名FTP33027.4 小结331第28章 SMTP:简单邮件传送协议33228.1 引言33228.2 SMTP协议33228.2.1 简单例子33228.2.2 SMTP命令33428.2.3 信封、首部和正文33528.2.4 中继代理33528.2.5 NVT ASCII33728.2.6 重试间隔33728.3 SMTP的例子33728.3.1 MX记录:主机非直接连到Internet33728.3.2 MX记录:主机出故障33928.3.3 VRFY和EXPN命令34028.4 SMTP的未来34028.4.1 信封的变化:扩充的SMTP34128.4.2 首部变化:非ASCII字符34228.4.3 正文变化:通用Internet邮件扩充34328.5 小结346第29章 网络文件系统34729.1 引言34729.2 Sun远程过程调用34729.3 XDR:外部数据表示34929.4 端口映射器34929.5 NFS协议35129.5.1 文件句柄35329.5.2 安装协议35329.5.3 NFS过程35429.5.4 UDP还是TCP35529.5.5 TCP上的NFS35529.6 NFS实例35629.6.1 简单的例子:读一个文件35629.6.2 简单的例子:创建一个目录35729.6.3 无状态35829.6.4 例子:服务器崩溃35829.6.5 等幂过程36029.7 第3版的NFS36029.8 小结361第30章 其他的TCP/IP应用程序36330.1 引言36330.2 Finger协议36330.3 Whois协议36430.4 Archie、WAIS、Gopher、Veronica和WWW36630.4.1 Archie36630.4.2 WAIS36630.4.3 Gopher36630.4.4 Veronica36630.4.5 万维网WWW36730.5 X窗口系统36730.5.1 Xscope程序36830.5.2 LBX: 低带宽X37030.6 小结370附录A tcpdump程序371附录B 计算机时钟376附录C sock程序378附录D 部分习题的解答381附录E 配置选项395附录F 可以免费获得的源代码406参考文献409缩略语420
      TCP/IP详解卷1:协议的作品目录

      如何学习 tcpip

      第一阶段: 先了解七层模型,然后看一下CCNA/NP的教学视频和书籍,对网络模型有初步了解。第二阶段:可以去看看《TCP/IP详解卷一》,讲基础。第三阶段:学习一些理论知识,最好的还是机械工业出版社出版的《计算机网络,自顶向下网络设计》和《计算机网络,系统方法》。第四阶段:看《TCP/IP详解卷二》,讲Unix TCP/IP协议栈设计。第五阶段:看Linux 内核源码network部分。 以上都是关于TCP/IP的知识点,不包括广域网技术和其他的接入网技术等。
      如何学习 tcpip

      tcpip详解有必要看吗

      作者:晨随 来源:知乎对网络编程开发人员来说,能清晰地理解TCP/IP的相关协议,是掌握socket编程的关键。所以必须认真学习《TCP/IP详解:卷一》。 《TCP/IP详解・卷1:协议(英文版第2版)》([美]福尔,史蒂文斯)
      tcpip详解有必要看吗

      《TCP/IP详解卷1:协议》pdf下载在线阅读,求百度网盘云资源

      《TCP/IP详解 卷1:协议》([美国] W·Richard Stevens)电子书网盘下载免费在线阅读链接:https://pan.baidu.com/s/1cD1DPld0vPtT7cUfY3Y2gg提取码:n64d书名:TCP/IP详解 卷1:协议作者:[美国] W·Richard Stevens译者:范建华豆瓣评分:9.2出版社:机械工业出版社出版年份:2000-4-1页数:423内容简介:《TCP/IP详解卷1:协议》是一本完整而详细的TCP/IP协议指南。描述了属于每一层的各个协议以及它们如何在不同操作系统中运行。作者W.Richard Stevens用Lawrence Berkeley实验室的tcpdump程序来捕获不同操作系统和TCP/IP实现之间传输的不同分组。对tcpdump输出的研究可以帮助理解不同协议如何工作。 《TCP/IP详解卷1:协议》适合作为计算机专业学生学习网络的教材和教师参考书。也适用于研究网络的技术人员。作者简介:W.Richard Stevens,国际知名的UNIX和网络专家,备受赞誉的技术作家。他1951年2月5日出生于赞比亚,后随父母回到美国。中学时就读于弗吉尼亚菲什伯恩军事学校,1973年获得密歇根大学航空和航天工程学士学位。1975年至1982年,他在亚利桑那州图森市的基特峰国家天文台从事计算机编程工作,业余时间喜爱飞行运动,做过兼职飞行教练。这期间他分别在1978年和1982年获得亚利桑那大学系统工程硕士和博士学位。此后他去康涅狄格州纽黑文的健康系统国际公司任主管计算机服务的副总裁。1990年他回到图森,从事专业技术写作和咨询工作。写下了多种经典的传世之作,包括《TCP/IP详解》(三卷)、《UNlX环境高级编程》和《UNI×网络编程》(两卷)。Stevens于1999年9月1日去世,年仅48岁。2000年他被国际权威机构USENIX追授“终身成就奖”。
      《TCP/IP详解卷1:协议》pdf下载在线阅读,求百度网盘云资源

      本文由 在线网速测试 整理编辑,转载请注明出处,原文链接:https://www.wangsu123.cn/news/314582.html

          热门文章

          文章分类