文章分类 -  TCP/IP详解 卷1:协议

为了在自己学习的过程中留下总结和痕迹吧~
摘要:一、简介 连个报文传送代理MTA(Message Transfer Agent)之间用NVT ASCII进行通信。客户向服务器发出命令,服务器用数字应答码和可选的人可读字符串进行响应。客户只能向服务器发送很少的命令:不到12个。 SMTP的命令主要包括: HELO:用于标识自己; MAIL:用于标识出报文的发起人; RCPT:标识接收方; DATA:发送邮件报文的内容; QUIT:结束邮件交换; VRFY:使用户能够询问发送方以验证接收方地址,而无需向接收方发送邮件; NOOP:强迫服务器响应一个OK应答码(200); EXPN:决定到该用户的邮件是否被转发,并打印出转... 阅读全文
posted @ 2013-09-23 22:48 daiyl0320 阅读(257) 评论(0) 推荐(0)
摘要:一、简介 FTP是用于文件传输的Internet标准。它通过支持有限数量的文件类型(ASCII,二进制等)和文件结构(面向字节流或记录)来处理不同系统间的差异。二、FTP协议 FTP使用两个连接来传输一个文件。 (1)控制连接以通常的客户服务器方式建立。服务器以被动方式打开众所周知的用于FTP的端口(21),等待客户的连接。客户则以主动方式打开TCP端口21,来建立连接。控制连接始终等待客户与服务器之间的通信。该连接将命令从客户传给服务器,并传回服务器的应答。由于命令通常是由用户键入的,所以IP对控制连接的服务类型就是“最大限度地减小迟延” 。 (2)每当一个文件在客户与服务器之间传输... 阅读全文
posted @ 2013-09-23 20:49 daiyl0320 阅读(286) 评论(0) 推荐(0)
摘要:一、简介 TCP/IP网络上,有两种应用提供远程登录功能。 (1)Telnet是标准的提供远程登录功能的应用,几乎每个TCP/IP的实现都提供这个功能。它能运行在不同操作系统的主机之间。Telnet通过客户进程和服务器进程之间的选项协商机制,从而确定通信双方可以提供的功能特性。Telnet获得异构性是强制两端采用同一个标准:使用7比特ASCII码的NVT。 (2)Rlogin只能工作在Unix系统之间,现在已经可以在其他操作系统上运行了。 远程登录采用客户-服务器模式,如下图所示: 在这张图中,有以下要点需要注意: (1)Telnet客户进程同时和终端用户和TCP/IP协议模块进行... 阅读全文
posted @ 2013-09-22 23:21 daiyl0320 阅读(1554) 评论(0) 推荐(1)
摘要:一、简介 基于TCP/IP的网络管理包含两个部分:网络管理站和被管的网络单元。被管设备端和管理相关软件叫做代理程序或代理进程。管理进程和代理进程之间的通信可以有两种方式。一种是管理进程向代理进程发送询问请求;另一种是代理进程主动向管理进程报告某些重要的事件发生。 基于TCP/IP的网络管理包含3个组成部分: (1)一个管理信息库MID(Management Information Base); (2)关于MIB的一套公用的结构和表示符号; (3)管理进程和代理进程之间的通信协议,叫做简单网络管理协议SNMP。 简单网络管理协议(SNMP:Simple Network Managem... 阅读全文
posted @ 2013-09-22 20:22 daiyl0320 阅读(286) 评论(0) 推荐(1)
摘要:一、路径MTU发现 TCP的路径MTU发现按如下方式进行:在连接建立时,TCP使用输出接口或对端声明的MSS中的最小MTU作为起始的报文段大小。路径MTU发现不允许TCP超过对端声明的MSS。如果对端没有指定一个MSS,则默认为536。 一旦选定了起始的报文段大小,在该连接上的所有被TCP发送的IP数据报都将被设置DF位。如果中间路由器需要对一个设置了DF标志的数据报进行分片,它就丢弃这个数据报,并产生一个ICMP的“不能分片”差错。 如果收到这个ICMP差错,TCP就减少段大小并进行重传。如果路由器产生的是一个较新的该类ICMP差错,则报文段大小被设置为下一跳的MTU减去IP和TCP的首.. 阅读全文
posted @ 2013-09-22 00:21 daiyl0320 阅读(381) 评论(0) 推荐(0)
摘要:一、简介 对于运输层是否应该存在保活定时器的讨论一直都有,一些专家觉得这应该有应用层自行维护。 如果一个给定的连接在2小时内没有任何动作,那么服务器就向客户发送一个探查报文段。客户主机必须处于以下4个状态之一。 (1)客户主机依然正常运行,并从服务器可达。客户的TCP响应正常,而服务器也知道对方的正常工作的。服务器在2小时内将保活定时器复位。 (2)客户主机已经崩溃,并且关闭或者正在重新启动。在任何一种情况下,客户的TCP都没有响应。服务器将不能收到对探查的响应,并在75秒后超时。总共发送10个探查,间隔75秒(初始定时器为2小时)。最终返回给应用的可能是“连接超时”。 (3)客户主... 阅读全文
posted @ 2013-09-21 22:57 daiyl0320 阅读(167) 评论(0) 推荐(0)
摘要:一、简介 ACK的传输并不可靠,也就是说,TCP不对ACK报文段进行确认,TCP只确认那些包含数据的ACK报文段。为了防止因为ACK报文段丢失而双方进行等待的问题,发送方用一个坚持定时器来周期性地向接收方查询。这些从发送方发出地报文段称为窗口探查。 如果一个确认丢失了,则双方就有可能因为等待对方而使连接终止:接收方等待接收数据(因为已经向发送方通告了一个非0的窗口),而发送方在等待允许它继续发送数据的窗口更新。为了防止这种死锁情况的发生,发送方使用一个坚持定时器来周期性的向对方查询,以便发现窗口是否已增大。这些从发送方发出的报文段称为窗口探查。二、糊涂窗口综合征 糊涂窗口综合征,此现象可... 阅读全文
posted @ 2013-09-21 22:52 daiyl0320 阅读(105) 评论(0) 推荐(0)
摘要:一、简介 TCP提供可靠的传输层。使用的方法之一是确认从另一端收到的数据,但数据和确认都有可能会丢失。TCP通过设置定时器和重传策略来解决这种问题。 TFTP客户使用UDP时限了一个简单的超时和重传机制:5秒作为定时器值,每隔5秒进行重传;另外,向一个不存在的主机主机发送ARP,当TCP试图建立连接的时候,在每个重传之间使用一个较长的时延来重传SYN。 对每一个连接,TCP管理4个不同的定时器: (1) 重传定时器用于当希望收到另一端的确认。 (2) 坚持定时器使窗口大小信息保持不断流动,即使另一端关闭了其接收窗口。 (3) 保活定时器可检测到一个空闲连接的另一端何时崩溃或重启。 ... 阅读全文
posted @ 2013-09-21 19:14 daiyl0320 阅读(252) 评论(0) 推荐(0)
摘要:一、简介 TFTP使用了停止等待协议。数据发送方在发送下一个数据块之前需要等待接收对已发送数据的确认。TCP所使用的被称为滑动窗口协议的另一种形式的流量控制方法,该协议允许发送方在停止并等待确认前可以发送多个分组。由于发送方不必每发一个分组就停下来等待确认,因此该协议可以加速数据的传输。二、滑动窗口 滑动窗口本质上是描述接受方的TCP数据报缓冲区大小的数据,发送方根据这个数据来计算自己最多能发送多长的数据。如果发送方收到接受方的窗口大小为0的TCP数据报,那么发送方将停止发送数据,等到接受方发送窗口大小不为0的数据报的到来。 关于滑动窗口协议,书上还介绍了三个术语,分别是: 窗口合拢:... 阅读全文
posted @ 2013-09-21 13:57 daiyl0320 阅读(160) 评论(0) 推荐(0)
摘要:一、经受时延的确认 通常TCP在接收数据的时候并不立即发送ACK;相反,它推迟发送,以便将ACK与需要沿该方向发送的数据一起发送。TCP将以最大200ms的时延等待是否有数据一起发送。二、Nagle算法 该算法要求一个TCP连接上最多只能有一个未被确认的未完成的小分组,在该分组的确认到达之前不能发送其他的小分组。相反,TCP手机这些少量的分组,并在确认到来时以一个分组的方式发出去。该算法的优越之处在于它是自适应的:确认到达得越快,数据也就发送得越快。而在希望减小分组数目的低速广域网上,则会发送更少的分组。三、关闭Nagle算法 有时我们需要关闭Nagle算法,如X窗口系统服务器,小消息(... 阅读全文
posted @ 2013-09-20 23:11 daiyl0320 阅读(119) 评论(0) 推荐(0)
摘要:一、建立连接协议 TCP的连接建立时间序列如下所示: 为了建立一个TCP连接: (1)请求端(通常为客户端)发送一个SYN段指明客户打算连接的服务器端口以及初始序号ISN。这个SYN段为报文段1; (2)服务器回送包含服务器初始序号的SYN报文段(报文段2)作为应答。同事将确认序号设置为客户的ISN+1以对客户的SYN报文段进行确认。一个SYN将占用一个序号。 (3)客户必须将确认序号设置为服务器的ISN+1以对服务器的SYN报文段进行确认(报文段3)。 这三个报文段完成连接的建立,称为三次握手(three-way handshake)。二、连接终止协议 建立一个连接需要三次握手... 阅读全文
posted @ 2013-09-20 20:12 daiyl0320 阅读(260) 评论(0) 推荐(0)
摘要:一、TCP的服务 尽管TCP和UDP都是用相同的网络层(IP),TCP却向应用层提供与UDP完全不同的服务,TCP提供一种面向连接的、可靠的字节流的全双工服务。 面向连接意味着TCP的应用在彼此交换数据之前必须先建立一个TCP连接。 TCP通过下列方式提供可靠性: (1)应用数据被分割为TCP认为最合适发送的数据块,由TCP传递给IP的信息单位称为报文段或段(segment); (2)当TCP发出一个段后,它启动一个定时器,等待目的端确认收到这个报文段。若不能及时收到一个确认,则重发这个报文段; (3)TCP收到发自TCP连接另一端的数据,它将发送一个确认,这个确认并不立即发送,通... 阅读全文
posted @ 2013-09-20 16:23 daiyl0320 阅读(186) 评论(0) 推荐(0)
摘要:一、简介 在进行系统引导时通过RARP来获得它自身的IP地址,这存在两个问题:(1)IP地址是返回的唯一结果;(2)既然RARP使用链路层广播,RARP请求就不会被路由器转发(迫使每个实际网络设置一个RARP服务器)。而BOOTP(引导程序协议)是一种用于无盘系统进行系统引导的替代方法。二、BOOTP的分组格式 BOOTP请求和应答军备封装在UDP数据报中,如下所示: BOOTP请求和应答格式如下: 详细介绍见书中的P163。 BOOTP有两个熟知的端口号:BOOTP服务器为67,BOOTP客户为68。选择两个端口而不是一个端口为BOOTP服务器用的原因是:服务器的应答可以进行广播。... 阅读全文
posted @ 2013-09-20 15:43 daiyl0320 阅读(224) 评论(0) 推荐(0)
摘要:一、简介 TFTP(Trivial File Transfer Protocol)简单文件传输协议,最初打算用于引导无盘系统(通常是工作站或X终端)。为保持简单和短小,TFTP将使用UDP,其代码能适合只读存储器。二、协议 TFTP客户端通过指定需要读的文件名及文件模式来获取数据,收到每个数据分组后,会送ACK进行认证,每个数据分组除了最后一个数据分组外均包含512字节的数据。而在写模式下(客户必须具有写权限),过程与读相反,服务器会送ACK,客户则发送数据文件。这种类型的数据传输称为停止等待协议。TFTP的报文格式如下: 既然TFTP使用不可靠的UDP,它就必须处理分组丢失和重复。分组... 阅读全文
posted @ 2013-09-20 15:19 daiyl0320 阅读(273) 评论(0) 推荐(0)
摘要:一、简介 域名系统(DNS)是一种用于TCP/IP应用程序的分布式数据库,他提供主机名字和IP地址间的转换及有关电子邮件的选路信息。从应用角度上看,DNS的访问是通过一个地址解析器(resolver)来完成的。在Unix主机中,该解析器主要通过库函数gethostbyname和gethostbyaddr来访问。前者接收主机名返回IP地址,后者接收IP地址来寻找主机名。解析器通过一个活多个名字服务器完成这种相互转换。二、DNS基础 DNS层次组织如下所示: 感觉就像是维护一个trial树一样,命名标识中一律不区分大小写。 每个名字服务器必须知道如何同根的名字服务器联系。DNS的一个基本特... 阅读全文
posted @ 2013-09-20 14:57 daiyl0320 阅读(363) 评论(0) 推荐(0)
摘要:一、简介 IGMP协议用于支持主机和路由器进行多播。它让一个物理网络上所有的系统知道主机当前所在的多播组。多播路由器需要知道这些信息以便知道多播数据报应该向哪些接口转发。 IGMP是IP层的一部分。通过IP数据报进行传输,其有固定报文长度,无可选数据。IGMP报文通过IP首部中协议字段值为2来指明。二、IGMP报文 8字节的IGMP报文格式如下: IGMP类型为1说明由多播路由器发出的查询报文,为2说明由主机发出的报告报文。校验和的计算和ICMP协议相同。查询报文中组地址为0,报告报文中组地址为要参加的组地址。三、IGMP协议 1、加入一个多播组 多播的基础就是一个进程的概念,... 阅读全文
posted @ 2013-09-20 14:21 daiyl0320 阅读(591) 评论(0) 推荐(0)
摘要:一、简介 IP地址包括单播地址、多播地址和广播地址。多播和广播仅用于UDP。 有时一个主机要向网上的所有其他主机发送帧,这就是广播。多播处于单播和广播之间:帧仅传送给属于多播组的多个主机。 对于以太网,当地址中最高字节的最低位设置为1时表示该地址是一个多播地址,用16进制可表示为01:00:00:00:00:00,以太网广播地址ff:ff:ff:ff:ff:ff可以看做是以太网多播地址的特例。 使用广播的问题是它增加了对广播数据不感兴趣主机的负荷,多播的出现减少了对应用不感兴趣主机的处理负荷。二、广播 1、受限的广播 受限的广播地址是255.255.255.255,该地址用于主... 阅读全文
posted @ 2013-09-20 14:02 daiyl0320 阅读(195) 评论(0) 推荐(0)
摘要:一、简介 UDP是一个简单的面向数据包的运输层协议:进程的每个输出操作都正好产生一个UDP数据报,并组装成一份待发送的IP数据报。这与面向流字符的协议不同,如TCP,应用程序产生的全体数据与真正发送的单个IP数据报可能没有什么关系。 UDP数据报封装成的IP数据报格式如下所示: UDP不提供可靠性,它把应用程序传给IP的数据发送出去,但并不保证他们能到达目的地。其次,应用程序必须关心IP数据报的长度,如果它超过网络的最大传输单元(Maximum Transmission Unit,MTU),那么就要对IP数据报进行分片。二、UDP首部 UDP首部各字段如下图所示: 端口号表示发送进程... 阅读全文
posted @ 2013-09-20 13:20 daiyl0320 阅读(947) 评论(0) 推荐(0)