摘要: 一、简介 ACK的传输并不可靠,也就是说,TCP不对ACK报文段进行确认,TCP只确认那些包含数据的ACK报文段。为了防止因为ACK报文段丢失而双方进行等待的问题,发送方用一个坚持定时器来周期性地向接收方查询。这些从发送方发出地报文段称为窗口探查。 如果一个确认丢失了,则双方就有可能因为等待对方而使连接终止:接收方等待接收数据(因为已经向发送方通告了一个非0的窗口),而发送方在等待允许它继续发送数据的窗口更新。为了防止这种死锁情况的发生,发送方使用一个坚持定时器来周期性的向对方查询,以便发现窗口是否已增大。这些从发送方发出的报文段称为窗口探查。二、糊涂窗口综合征 糊涂窗口综合征,此现象可... 阅读全文
posted @ 2013-09-21 22:52 daiyl0320 阅读(100) 评论(0) 推荐(0) 编辑
摘要: 一、简介 TCP提供可靠的传输层。使用的方法之一是确认从另一端收到的数据,但数据和确认都有可能会丢失。TCP通过设置定时器和重传策略来解决这种问题。 TFTP客户使用UDP时限了一个简单的超时和重传机制:5秒作为定时器值,每隔5秒进行重传;另外,向一个不存在的主机主机发送ARP,当TCP试图建立连接的时候,在每个重传之间使用一个较长的时延来重传SYN。 对每一个连接,TCP管理4个不同的定时器: (1) 重传定时器用于当希望收到另一端的确认。 (2) 坚持定时器使窗口大小信息保持不断流动,即使另一端关闭了其接收窗口。 (3) 保活定时器可检测到一个空闲连接的另一端何时崩溃或重启。 ... 阅读全文
posted @ 2013-09-21 19:14 daiyl0320 阅读(229) 评论(0) 推荐(0) 编辑
摘要: 一、简介 TFTP使用了停止等待协议。数据发送方在发送下一个数据块之前需要等待接收对已发送数据的确认。TCP所使用的被称为滑动窗口协议的另一种形式的流量控制方法,该协议允许发送方在停止并等待确认前可以发送多个分组。由于发送方不必每发一个分组就停下来等待确认,因此该协议可以加速数据的传输。二、滑动窗口 滑动窗口本质上是描述接受方的TCP数据报缓冲区大小的数据,发送方根据这个数据来计算自己最多能发送多长的数据。如果发送方收到接受方的窗口大小为0的TCP数据报,那么发送方将停止发送数据,等到接受方发送窗口大小不为0的数据报的到来。 关于滑动窗口协议,书上还介绍了三个术语,分别是: 窗口合拢:... 阅读全文
posted @ 2013-09-21 13:57 daiyl0320 阅读(148) 评论(0) 推荐(0) 编辑
摘要: 一、经受时延的确认 通常TCP在接收数据的时候并不立即发送ACK;相反,它推迟发送,以便将ACK与需要沿该方向发送的数据一起发送。TCP将以最大200ms的时延等待是否有数据一起发送。二、Nagle算法 该算法要求一个TCP连接上最多只能有一个未被确认的未完成的小分组,在该分组的确认到达之前不能发送其他的小分组。相反,TCP手机这些少量的分组,并在确认到来时以一个分组的方式发出去。该算法的优越之处在于它是自适应的:确认到达得越快,数据也就发送得越快。而在希望减小分组数目的低速广域网上,则会发送更少的分组。三、关闭Nagle算法 有时我们需要关闭Nagle算法,如X窗口系统服务器,小消息(... 阅读全文
posted @ 2013-09-20 23:11 daiyl0320 阅读(114) 评论(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 阅读(234) 评论(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 阅读(176) 评论(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 阅读(183) 评论(0) 推荐(0) 编辑
摘要: 一、简介 TFTP(Trivial File Transfer Protocol)简单文件传输协议,最初打算用于引导无盘系统(通常是工作站或X终端)。为保持简单和短小,TFTP将使用UDP,其代码能适合只读存储器。二、协议 TFTP客户端通过指定需要读的文件名及文件模式来获取数据,收到每个数据分组后,会送ACK进行认证,每个数据分组除了最后一个数据分组外均包含512字节的数据。而在写模式下(客户必须具有写权限),过程与读相反,服务器会送ACK,客户则发送数据文件。这种类型的数据传输称为停止等待协议。TFTP的报文格式如下: 既然TFTP使用不可靠的UDP,它就必须处理分组丢失和重复。分组... 阅读全文
posted @ 2013-09-20 15:19 daiyl0320 阅读(242) 评论(0) 推荐(0) 编辑
摘要: 一、简介 域名系统(DNS)是一种用于TCP/IP应用程序的分布式数据库,他提供主机名字和IP地址间的转换及有关电子邮件的选路信息。从应用角度上看,DNS的访问是通过一个地址解析器(resolver)来完成的。在Unix主机中,该解析器主要通过库函数gethostbyname和gethostbyaddr来访问。前者接收主机名返回IP地址,后者接收IP地址来寻找主机名。解析器通过一个活多个名字服务器完成这种相互转换。二、DNS基础 DNS层次组织如下所示: 感觉就像是维护一个trial树一样,命名标识中一律不区分大小写。 每个名字服务器必须知道如何同根的名字服务器联系。DNS的一个基本特... 阅读全文
posted @ 2013-09-20 14:57 daiyl0320 阅读(343) 评论(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 阅读(547) 评论(0) 推荐(0) 编辑