现在的位置: 首页 > 综合 > 正文

TCP/IP杂记

2014年07月09日 ⁄ 综合 ⁄ 共 4071字 ⁄ 字号 评论关闭

本文所总结的也是书上的一些小问题,有可能有错,仅供参考:

1.TCP/IP四层模型:应用层(Telnet、ftp、snmp和smtp等)、传输层(TCP/UDP)、网络层(IP、ICMP和IGMP)和链路层(设备驱动程序和网络接口卡)。(P1)

 

2.在TCP/IP协议族中,网络层IP提供的是一种不可靠、无连接的数据报传送服务。也就是说,它只是尽可能快地把分组从源节点送到目的节点,但是并不提供任何可靠性保证。如果发生某种错误时,如某个路由器暂时用完了缓冲区,IP有一个简单的错误处理算法:丢弃该数据报,然后发送ICMP消息报给信源端,任何要求可靠性必须由上层来提供(TCP)。

      而另一方面,TCP在不可靠的IP层上提供了一个可靠的传输层。为了提供的这种可靠的服务,TCP采用了超时重传、发送和接收端到端的确认分组机制。(P3、P24)

 

3.以太网格式(如下图),可以看出除了以太网14字节首部,以太网帧数据要求在46与1500字节之间。(P16)

 

 

4.TCP和UDP采用16位的端口号来识别应用程序,分别包括源端口和目的端口。其中,服务器一般都是通过知名端口号来标识的。例如,FTP服务器的TCP端口21,Telnet服务器的TCP端口23,TFTP服务器的UDP端口69。任何TCP/IP实现所提供的服务都用知名的1到1023之间的端口号。(P9)

 

5.由于TCP、UDP、ICMP和IGMP都要向IP传送数据,因此IP首部中有标识(8Bit)标记数据属于哪一层。1表示ICMP,2表示IGMP,6表示TCP协议,17表示UDP协议;TCP和UDP首部端口号标识不同的应用程序;网络接口层分别要发送IP、ARP和RARP,因此也必须在以太网的帧首部加入标识(16bit)。

同样,网络接口分别要发送和接受IP、ARP和RARP数据,因此也必须在以太网帧首部加入某种形式的标志,以指明生成数据的网络层协议(P7)

 

6.最大传输单元(MTU)表示各种网络对数据帧长度的限制。如果传送的数据比链路层的MTU要大,则IP层就要进行分片。典型的网络最大值:以太网(1500字节)、IEEE802.3/802.2(1492=1500-8)、X.25(576)、点对点(296)。(P21)

 

7.IP首部中的TOS字段(4bit):最小时延、最大吞吐量、最最高可靠性和最小费用。不同应用的TOS建议值:Telnet/Rlogin要求最小的传输时延。因为人们主要用它来传输少量的交互数据。另一方面,FTP文件传输则要求有最大的吞吐量。最高可靠性则被明给网络管理(SNMP)和路由选择协议。用户网络新闻(NNTP)是唯一要求最小费用的应用。(P25)

 

8.IP路由选择主要完成以下功能:

      (1)搜索路由表,寻找能与目的IP地址完全匹配的表目(网络号和主机号都要匹配)。如果找到,则把报文发送给该表目指定的下一站路由器或直接连接的网络接口。

      (2)搜索路由表,寻找能与目的网络号相匹配的表目。如果找到,则把报文发送给该表目指定的下一站路由器或直接连接的网络接口。目的网络上的所有主机都可以通过这个表目来处置。(这种搜索方法需要考虑到子网掩码)

      (3)搜索路由表,寻找标为"默认(default)"的表目。如果找到,则把报文发送给该表目指定的下一站路由器。

        如果上面这些步骤都没有成功,那么该数据报不能被传送,则向生成数据报的应用程序返回一个“主机不可达”或网络不可达的错误。

        简而言之,按照完全匹配--->网络号匹配--->默认路由。(P28)

 

9.系统产生的或转发的每份IP数据报都要搜索路由表,它可以被路由守护程序或ICMP重定向报文所修改。系统在默认的情况下不转发数据报,除非进行特殊的配置。用route命令可以加入静态路由,可以利用新ICMP路由器发现报文来初始化默认表项,并进行动态修改。主机启动时只有一个简单的路由表,它可以被来自默认路由器的ICMP重定向报文所修改。(P94)


10.数据报中的IP地址始终不发生任何变化,所有路由策略都是基于这个目的IP地址。但是每个链路层可能具有不同的数据帧首部,而且链路层的目的地址始终指的是下一站链路层地址。

11.子网寻址,IP地址包括网络号和主机号,将主机号在划分为子网号和主机号。子网对外部路由器来说隐藏了内部网络组织的细节,Internet数据可以先发送到gateway,然后再由gateway传送到相应的子网路由器,但是子网对于子网内部的路由器是不透明的。划分子网的好处在缩减了路由表的规模。(P31)

 

12.Icmp差错报文(P57)

 

 注:ping和Traceroute,他们都使用ICMP


13.ARP高效的运行的关键是由于每个主机上都有一个ARP高速缓存,这个缓存存放了最近Internet地址到硬件地址之间的映射记录。高速缓存中每一项的生存时间一般为20分钟(高速缓冲器的每一项内容都有一个定时器,根据它来删除不完整和完整的表项,另外arp指令也可以显示的增加删除高速缓存中的内容),起始时间从被创建时间开始算起。(P40)

     一般情况下,系统收到ARP请求或ARP应答时,都要把请求端的硬件地址和IP地址存入ARP高速缓存中。(尤其注意ARP请求,也是要缓存的)(P43)在发送ARP的时候,就不要发送了。

    ARP/RARP请求是广播的,而ARP/RARP是单播传送的。

 

14.免费ARP的两个作用:(1)确定是否有IP冲突,即不同的硬件地址设置了相同的IP;(2)如果主机改变了硬件地址(换网卡),则更新主机的MAC地址。(P45)

 

15.traceroute的原理:但路由器收到一份IP数据报,其TTL字段为0或1,则路由器将该数据报丢弃,并给信源机发一份ICMP“超时”信息。traceroute程序的关键在于包含这份ICMP信息的IP报文的信源地址是该路由器的IP地址。traceout首先发送一份TTL字段为1的IP数据报给目的主机,处理这份数据报的第一个路由器将TTL减1,丢弃该数据报,发送超时ICMP报文,则得到第一个路由器的IP地址,依次类推。

       但是目的主机收到TTL为1的IP数据报,也不会丢弃并不会产生ICMP,这是因为数据已到达目的。这时traceroute发送一份UDP数据报给目的主机,但它选择一个不可能的值作为UDP端口号,使目的主机任何一个应用程序都不可能使用该端口,则该数据报到达时,将使目的主机的UDP模块产生一份“端口不可达”错误的ICMP报文。这样Traceroute程序所需要做的是区分接收到的ICMP是超时还是端口不可达,以判断结束。(P72)

 

16.目前有四种类型的广播地址:受限的广播、指向网络的广播、指向子网的广播和指向所有子网的广播。受限的广播(255.255.255.255)通常只在系统初始化时启动会用到。

     D类IP地址被称为多播地址。通过将其地位23bit映射到相应以太网地址中便可实现多播地址到以太网地址的转换。由于地址映射不唯一,因此需要其他的协议实现额外的数据报过滤。

 

17.TCP提供一种面向连接、可靠的字节流服务。TCP为应用层提供全双工服务,首先应通过3次握手建立连接(同时打开时需要4次握手),结束后应该4次握手来结束发送和接收通道的连接(同时关闭也只需要4次握手)。(P176~P177)

 

18.2MSL等待状态:TIME_WAIT状态也成为2MSL等待状态。每个具体TCP/IP实现必须选择一个报文段最大生存时间MSL(Maximum Segment Lifetime)。它是任何报文段被丢弃之前在网络内的最长时间。

       对一个具体实现所给的MSL值,处理原则:当TCP执行一个主动关闭,并发回最后一ACK,该连接必须在TIME_WAIT状态停留的时间为2倍的MSL。这样可让TCP再次发送最后的ACK以防之前发送的ACK丢失。这个TIME_WAIT停留期间,定义这个连接的插口(客户的IP地址和端口号、服务器的IP地址端口号)不能再被使用。这个连接只能在2MSL状态结束后才能再被使用(在连接处于2MSL期间,任何迟到的报文段将被丢弃)。

       对于客户端程序来说,暗示当我们终止一个客服程序,并立即重新启动这个应用程序,则这个客户程序将不能重用相同的本地端口。服务器一般处于被动关闭状态,不进入TIME_WAIT状态。对于服务器,情况有所不同,因为服务器使用知名端口。如果我们终止一个已经建立连接的服务端程序,并试图立即重启,服务器程序将不能把它的这个知名端口赋值给它的端口,因为那个端口处于2MSL连接的一部分。在重启服务器程序前,需要在1~4分钟。(P186)

 

19.无论何时一个报文端发往基准连接出现错误,TCP都会发出一个复位报文段(TCP首部中的RST比特置位)。常见情况是当连接请求到达时,目的端口没有进程正在听;通过发送RST报文段而不是FIN来中途释放一个连接,有时称这位异常释放。(P187)

 

20.半打开连接:如果一方已经关闭或异常终止连接而另一方却不知道,称这样的连接为半打开连接。任何一端的主机异常都可能导致发生这种情况。只要不打算在半打开连接上传输数据,仍处于连接状态的一方就不会检测到另一方已经出现异常。(P189)

 

21.MSS最大报文长度表示TCP传往另一端的最大数据块长度。当建立一个连接时,连接的双方都要通告各自的MSS。当TCP发送一个SYN时,或者因为一个本地应用进程想发起一个连接,或者是因为另一端的主机收到了两个连接请求,它能将MSS值设为外出接口上的MTU长度减去固定的IP首部和TCP首部。对于以太网,MSS值可达1460字节(1500-40)。使用IEEE802.3的封装,它的MSS可达1452(1500-40-8,为什么减8参见P16)。(P179)

  

 

待续。。。。。

抱歉!评论已关闭.