TCP/IP详解:第一、二章读书笔记

来源:互联网 发布:鸟哥linux基础篇 编辑:程序博客网 时间:2024/05/19 06:52

TCP/IP第一章和第二章读书笔记

第一章概述

  1. 大多数TCP/IP实现给临时端口分配 1024~5000 之间的端口号。大于 5000的端口号是为其他服务器预留的(Internet上并不常用的服务)。

  2. 大多数 Unix 系统的文件 /etc/services 都包含了人们熟知的端口号。为了找到 Telnet 服务器和域名系统的端口号,可以运行以下语句:

$ grep telnet /etc/services

telnet 23/tcp

rtelnet 107/tcp # Remote Telnet

rtelnet 107/udp

telnets 992/tcp # Telnet over SSL

telnets 992/udp

tfido 60177/tcp # fidonet EMSI over telnet

  1. 当使用 TCP 和 UDP 提供相同的服务时,一般选择相同的端口号。

  2. NCP,即网络控制协议,是 ARPANET 的运输层协议,是 TCP 的前身。NCP 是单工的,不是全双工的,因此每个应用程序需要两个连接,需预留一对奇数和偶数端口号。当 TCP和UDP成为标准的运输层协议时,每个应用程序只需要一个端口号,因此就使用了NCP中的奇数。

第二章链路层

  1. 在 TCP/IP 协议族中,链路层主要有三个目的:

(1)为IP模块发送和接收IP数据报;

(2)为ARP模块发送 ARP 请求和接收 ARP 应答;

(3)为RARP发送RARP请求和接收RARP应答。

  1. TCP/IP 支持多种不同的链路层协议,这取决于网络所使用的硬件,如以太网、令牌环网、FDDI(光纤分布式数据接口)及RS-232串行线路等。

  2. IEEE (电子电气工程师协会) 802委员会公布了一个稍有不同的标准集,其中802.3针对整个CSMA/CD网络(以太网), 802.4针对令牌总线网络, 802.5针对令牌环网络。这三者的共同特性由802.2标准来定义,那就是 802网络共有的逻辑链路控制(LLC)。不幸的是, 802.2和802.3定义了一个与以太网不同的帧格式。以太网IP数据报的封装是在 RFC 894中定义的, IEEE 802网络的IP数据报封装是在RFC 1042中定义的。

  3. 主机需求 RFC要求每台Internet主机都与一个10 Mb/s的以太网电缆相连接:

1) 必须能发送和接收采用 RFC 894(以太网)封装格式的分组

2) 应该能接收与RFC 894混合的RFC 1042(IEEE 802)封装格式的分组。

3) 也许能够发送采用 RFC 1042格式封装的分组。

  1. 如果主机能同时发送两种类型的分组数据,那么发送的分组必须是可以设置的,而且默认条件下必须是 RFC 894分组

  2. 最常使用的封装格式是RFC 894定义的格式。两种帧格式都采用48 bit(6字节)的目的地址和源地址(802.3允许使用16 bit的地址,但一般是48 bit地址)。

  3. 在以太网帧格式中,类型字段之后就是数据;而在 802帧格式中,跟随在后面的是3字节的802.2 LLC5字节的802.2 SNAP目的服务访问点(Destination Service Access Point,DSAP)源服务访问点(Source Service Access Point, SSAP)的值都设为0xaa。cntl 字段的值设为3。随后的3个字节org code都置为0。再接下来的2个字节类型字段和以太网帧格式一样。

  4. CRC 字段用于帧内后续字节差错的循环冗余码检验(检验和)(它也被称为 FCS或帧检验序列)。

  5. 802.3标准定义的帧和以太网的帧都有最小长度要求。802.3规定数据部分必须至少为38字节,而对于以太网,则要求最少要有46字节。为了保证这一点,必须在不足的空间插入填充(pad)字节。

  6. SLIP的全称是Serial Line IP。它是一种在串行线路上对IP数据报进行封装的简单形式,在RFC 1055中有详细描述。 SLIP适用于家庭中每台计算机几乎都有的RS-232串行端口(也就是机箱背后的9针和25针口,也称为COM1和COM2)和高速调制解调器接入Internet。(以太网水晶头型号为RJ-45

  7. SLIP协议定义的帧格式:

1) IP 数据报以一个称作END(0xc0)的特殊字符结束。同时,为了防止数据报到来之前的线路噪声被当成数据报内容,大多数实现在数据报的开始处也传一个END字符(如果有线路噪声,那么 END字符将结束这份错误的报文。这样当前的报文得以正确地传输,而前一个错误报文交给上层后,会发现其内容毫无意义而被丢弃)。

2) 如果 IP报文中某个字符为END,那么就要连续传输两个字节0xdb0xdc来取代它。0xdb这个特殊字符被称作SLIPESC字符,但是它的值与ASCII码的ESC字符(0x1b)不同。

3) 如果IP报文中某个字符为 SLIP的ESC字符,那么就要连续传输两个字节0xdb0xdd来取代它。

  1. SLIP是一种简单的帧封装方法,还有一些值得一提的缺陷:

1) 每一端必须知道对方的 IP地址。没有办法把本端的 IP地址通知给另一端。

2) 数据帧中没有类型字段(类似于以太网中的类型字段)。如果一条串行线路用于 SLIP,那么它不能同时使用其他协议。

3) SLIP没有在数据帧中加上检验和(类似于以太网中的CRC字段)。如果 SLIP传输的报文被线路噪声影响而发生错误,只能通过上层协议来发现(另一种方法是,新型的调制解调器可以检测并纠正错误报文)。这样,上层协议提供某种形式的 CRC就显得很重要。

  1. 由于串行线路的速率通常较低(19200 b/s或更低),而且通信经常是交互式的(如 Telnet和 Rlogin, 二者都使用 TCP), 因此在 SLIP 线路上有许多小的 TCP分组进行交换。人们提出一个被称作 CSLIP(即压缩 SLIP)的新协议,它在RFC 1144中被详细描述。CSLIP一般能把 40个字节压缩到 3或5个字节。它能在 CSLIP的每一端维持多达16个 TCP连接,并且知道其中每个连接的首部中的某些字段一般不会发生变化

  2. PPP, 点对点协议修改了 SLIP协议中的所有缺陷。PPP包括以下三个部分:

1) 在串行链路上封装 IP数据报的方法。 PPP既支持数据为 8位和无奇偶检验的异步模式(如大多数计算机上都普遍存在的串行接口),还支持面向比特的同步链接

2) 建立、配置及测试数据链路的链路控制协议(LCP:Link Control Protocol)。它允许通信双方进行协商,以确定不同的选项。

3) 针对不同网络层协议的网络控制协议(NCP:Network Control Protocol)体系。当前RFC定义的网络层IPOSI网络层DEC net以及Apple Talk。例如, IP NCP 允许双方商定是否对报文首部进行压缩,类似于 CSLIP(缩写词NCP也可用在TCP的前面)。

  1. PPP数据帧的格式看上去很像 ISO的HDLC(高层数据链路控制)标准RFC 1548描述了报文封装的方法和链路控制协议RFC 1332描述了针对 IP的网络控制协议的格式。每一帧都以标志字符 0x7e开始和结束。紧接着是一个地址字节,值始终是 0xff,然后是一个值为0x03的控制字节。

  2. 由于标志字符的值是 0x7e,因此当该字符出现在信息字段中时, PPP需要对它进行转义。

同步链路中,该过程是通过一种称作比特填充 (bit stuffing)的硬件技术来完成的。在异步链路中,特殊字符0x7d用作转义字符。当它出现在 PPP数据帧中时,那么紧接着的字符的第6个比特要取其补码,具体实现过程如下:

1 ) 当遇到字符 0x7e时,需连续传送两个字符: 0x7d0x5e,以实现标志字符的转义。

2 ) 当遇到转义字符 0x7d时,需连续传送两个字符:0x7d0x5d,以实现转义字符的转义。

3 ) 默认情况下,如果字符的值小于 0x20(比如,一个 ASCII控制字符),一般都要进行转义。例如,遇到字符 0x01时需连续传送 0x7d和 0x21两个字符(这时,第 6个比特取补码后变为1,而前面两种情况均把它变为 0)。

  1. PPP比SLIP具有下面这些优点:

(1) PPP支持在单根串行线路上运行多种协议,不只是IP协议;

(2) 每一帧都有循环冗余检验;

(3) 通信双方可以进行 IP地址的动态协商(使用IP网络控制协议);

(4) 与CSLIP类似,对 TCP和 IP**报文首部进行压缩;**

(5) 链路控制协议可以对多个数据链路选项进行设置。

  1. 环回接口( Loopback Interface),以允许运行在同一台主机上的客户程序和服务器程序通过 TCP/IP进行通信。 A类网络号 127就是为环回接口预留的。根据惯例,大多数系统把 IP 地址127.0.0.1分配给这个接口,并命名为localhost。一个传给环回接口的IP数据报不能在任何网络上出现。(实际中 127开头的IP地址都是发给本机的)

关键知识点:

1 ) 传给环回地址(一般是 127.0.0.1)的任何数据均作为IP输入。

2 ) 传给广播地址或多播地址的数据报复制一份传给环回接口,然后送到以太网上。这是因为广播传送和多播传送的定义(第12章)包含主机本身。

3 ) 任何传给该主机 IP地址的数据均送到环回接口。

  1. 送给主机本身 IP地址的 IP数据报一般不出现在相应的网络上。

  2. 如果两台主机之间的通信要通过多个网络,那么每个网络的链路层就可能有不同的 MTU。重要的不是两台主机所在网络的 MTU的值,重要的是两台通信主机路径中的最小 MTU。它被称作路径MTURFC 1191描述了路径 MTU的发现机制。traceroute程序也是用这个方法来确定到达目的节点的路径 MTU。

  3. 串行线路吞吐量计算

如果线路速率是 9600 b/s,而一个字节有 8 bit,加上一个起始比特和一个停止比特,那么线路的速率就是 960 B/s(字节/秒)。以这个速率传输一个 1024字节的分组需要 1066 ms。用SLIP链接运行一个交互式应用程序,同时还运行另一个应用程序如 FTP发送或接收 1024字节的数据,那么一般来说就必须等待一半的时间( 533 ms)才能把交互式应用程序的分组数据发送出去。大多数的 SLIP实现确实提供这类服务排队方法,把交互数据放在大块的数据前面。*交互通信一般有Telnet、Rlogin以及FTP的控制部分*(用户的命令,而不是数据)。

0 0
原创粉丝点击