摘要: 一、经受时延的确认 通常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) 编辑
摘要: 一、简介 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 阅读(171) 评论(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 阅读(886) 评论(0) 推荐(0) 编辑