本科版
文章
传输层学习之二(TCP基本概念)
TCP是一种极为重要的传输层服务(要不也不会称为TCP/IP协议族了:)),它提供了与UDP完全不同的服务。TCP提供的是一种面向连接的、可靠的字节流服务。 面向连接:使用TCP的两端在彼此交换数据之前必须先建立一个TCP连接。TCP连接是点对点的,在一个TCP连接中,仅有两方可以彼此通信,TCP不使用广播和多播。TCP的连接和电话网络的连接不同,它对中间的转发设备即路由器、交换机是透明的,连接的信息只存在于连接的两个端系统之上。 可靠:TCP保证数据传输的可靠性,TCP通过下列方式来提供可靠性: 字节流:两个应用程序通过TCP连接交换8bit字节构成的字节流。TCP不在字节流中插入记录标识符。字节流服务中,接收方无法了解发方每次发送了多少字节,可以确保的是一端将字节流放到TCP连接上,同样的字节流将出现在TCP连接的另一端。另外,TCP对字节流的内容不作任何解释。TCP不知道传输的数据字节流是二进制数据,还是ASCII字符、EBCDIC字符或者其他类型数据。对字节流的解释由TCP连接双方的应用层解释。 和UDP相同,TCP提供的是全双工的服务。 一、TCP首...
传输层学习之三(TCP数据传输)
TCP提供了可靠的传输服务,这是通过下列方式提供的: 应用数据被分割成TCP认为最适合发送的数据块。由TCP传递给IP的信息单位称为报文段或段(segment) 当TCP发出一个段后,它启动一个定时器,等待目的端确认收到这个报文段。如果不能及时收到一个确认,将重发这个报文段。 当TCP收到发自TCP连接另一端的数据,它将发送一个确认。这个确认不是立即发送,通常将推迟几分之一秒 TCP将保持它首部和数据的检验和。这是一个端到端的检验和,目的是检测数据在传输过程中的任何变化。如果收到段的检验和有差错,TCP将丢弃这个报文段和不确认收到此报文段(希望发端超时并重发)。 由于IP数据报的到达可能会失序,因此TCP报文段的到达也可能会失序。如果必要,TCP将对收到的数据进行重新排序,将收到的数据以正确的顺序交给应用层。 IP数据报会发生重复,TCP的接收端必须丢弃重复的数据。 TCP还能提供流量控制。TCP连接的每一方都有固定大小的缓冲空间。TCP的接收端只允许另一端发送接收端缓冲区所能接纳的数据。这将防止较快主机致使较慢主机的缓冲区溢出。 一、可靠传输的原理 由于网络环...
传输层学习之四(TCP长肥管道,公平性,syn-cookie)
一、TCP的保活定时器 TCP也可以通过保护定时器来检测对端是否已经“死掉”。这和其它协议的保护机制是类似的,没什么神奇之处。 二、路径MTU发现 路径MTU指的是当前在两个主机之间的路径上任何网络上的最小MTU。 IP中的路径MTU发现的实现:在IP首部中设置“不要分片(DF)”比特,来发现当前路径上的路由器是否需要对正在发送的IP数据报进行分片。如果一个待转发的IP数据报被设置DF比特,而其长度又超过了MTU,那么路由器将返回ICMP不可达的差错。然后就降低数据报长度,再尝试该过程,直到找到一个可以成功到达对端的MTU,它就是路径MTU。 TCP的路径MTU发现按如下方式进行: 在连接建立时,TCP使用初始的MSS作为起始的报文段大小。初始的MSS为对端声明的MSS,如果对端没有指定一个MSS,则默认为536。 一旦选定了起始的报文段大小,在该连接上的所有被TCP发送的IP数据报都将被设置DF比特。如果某个中间路由器需要对一个设置了DF标志的数据报进行分片,它就丢弃这个数据报,并产生一个的ICMP的“不能分片”差错。 如果收到这个ICMP差错,TCP就减少段大小并进行重...
传输层学习之五(TCP的SACK,F-RTO)
一、SACK选项 默认情况下TCP采取的是累积确认机制,这时如果发生了报文乱序到达,接收方只会重复确认最后一个按序到达的报文段,为此发送方的处理只能是重复按序到达接收方的报文段之后的那个报文段,因而它无法准确知道哪些报文段到达了,哪些没有到达。 考虑以下情景,发送方的窗口状态如下: 如上图所示,主机A通过TCP发送10个长度都为100字节的报文段给主机B,其序号分别为0,100,200,300,400,500,600,00,800,900(图中以数字0-9代替)。主机B收到了序号为0和序号为100的报文段,但是序号为200,300,400的丢失了。之后主机B又收到了报文段500,600,700,800,900。当收到后续这些分组时,主机B只能对报文段100继续进行确认,即发送确认号为200的ACK。主机A收到这样的确认时,能重传的唯一报文段就是报文段200,在报文段200的确认被收到之前发送窗口是无法移动的,这时状况就会很糟糕,发送方每重传一个丢失的报文段,接收方就确认一个(由于是累积确认的,所以情况可能更糟,接收方每次都在等待一段时间后才发送确认),然后发送窗口向前移动一个,...
传输层学习之一(传输层,UDP)
http://blog.csdn.net/goodluckwhh/article/details/9904159 传输层位于网络层和应用层之间,它的目的是为运行在不同主机上的进程之间的通信提供支持。传输层将网络层提供的不同主机之间的通信服务扩展到了运行在不同主机上的进程之间。 一、传输层 传输层协议为运行在不同主机上的应用之间提供了逻辑通信功能,而网络层则是提供了主机之间的逻辑通信服务。。传输层运行在主机上即端系统上。其基本通信过程为 发送方:传输层接收到来自应用进程的报文,并将其转换为传输层分组,因特网中称为传输层报文段,然后传输层将分组交给网络层,网络层将其交付到目的主机。 接收方:网络层从数据中提取传输层报文段,并将其提交给传输层。 1.和网络层的关系 传输层建立在网路层之上,因而传输层所能提供的服务要受到网络层提供服务的限制,比如假如网络层不能提供带宽和时延保证,那么传输层也无法提供该服务。但是传输层仍能够提供网络层所不能提供的服务,比如IP层是不可靠地服务,但是传输层仍能提供可靠服务。 2.传输层概述 TCP/IP提供了三种传输层协议: UDP:用户...
链路层学习之二(协议)
数据链路层(以太网协议):负责两个相邻设备之间的数据帧的传送和识别 一、以太网的帧格式 源地址和目的地址是指网卡的硬件地址(也叫MAC地址),长度是48位(6个字节),是在网卡出厂时固化的。 帧格式类型的字段有三种值,分别对应IP,ARP,RARP. 帧尾是CRC校验码. 二、MAC地址 含义:媒体访问控制,或物理地址,或硬件地址 用途:识别数据链路层中相连的节点。 组成:6个字节,一般用16进制数字加上冒号的形式来表示。(比如:08:00:27:03:fb:19) 在网卡出厂时就确定了,不能修改,mac地址通常是唯一的(虚拟机中的mac地址不是真实的mac地址,可能会冲突,也有些网卡支持用户配置的mac地址) 三、MAC地址和IP地址的比较 IP地址描述的是路途的起点和终点,MAC地址描述的是路途中每一个区间的起点和终点。 四、MTU(最大传输单元) 以太网帧中的数据长度规定最小46字节,最大1500字节,ARP数据包的长度不够46字节,要在后面补填充位。 不同的网络类型有不同的MTU. 如规一个数据包从以太网路由到拨号链路上,数据包长度大于拨号链路的MTU了,则需要对数据包进...
网络层概念学习之一(基本概念、路由器、选路算法)
网络层建立在链路层之上,它的最主要的功能是使得网络中的各个主机之间可以互相通信。在因特网中,IP层是TCP/IP协议族中最为核心的协议,也是最复杂的层次之一。 一、概述 1.转发和选路 网络层的功能是要将分组从一个主机移动到另一个主机从而使得主机之间可以互相通信。为此需要网络层提供两种功能: 存储转发:路由器(三层交换机)将进入其某个输入链路的分组转发到其某个输出链路。它是将分组从一个输入链路移动到一个输出链路,是一个路由器的本地动作。 路由选择:在分组从一个主机流向另一个主机的过程中,网络层必须决定分组所走过的路径。计算这个路径信息的算法就是路由算法。它是一个网络范围的动作,决定分组从其源到目的应该走的路径 路由器在网络层是一个极其重要的设备,每台路由器都由一张转发表。路由器检查到达分组首部中的一个字段的值,然后利用该值在路由器的转发表中进行查询,以决定该如何转发该分组。查询的结果是分组将被转发的路由器的链路接口。 选路算法决定了转发表中的值。选路算法可能是集中式(由某个中心点执行)的也可能是分布式的(运行在各台路由器上),无论采用何种方法,路由器都要接受选路协议报文...
网络层学习之二(IPv4及IPv6地址及相关协议)
IP(internetprotocol)协议是TCP/IP协议族的核心协议,是因特网的网络层。当前的版本号是4,也称为IPv4,下一代IP协议的版本号为6即IPv6。正如描述的网络层功能一样,IP层为因特网提供了选路和转发的功能。接入因特网的主机之间可以通过IP层而互相通信,在IP层,IP地址用于标识接入网络的接口,进而标识一台主机。当信息在TCP/IP协议栈中传递时,每层都会添加其自己的控制信息,即协议头,IP地址被添加在IP头中。IP头提供了IP协议以及数据报的信息。 一、IPv4数据报格式 当接入网络的两台设备通过IP层互相通讯时,交互的信息会被封装成网络层分组,网络层分组又被称为数据报。IPv4的数据报格式如下: 其各个字段的含义如下: 版本号:协议版本号,IPv4为4,IPv6则为6(当然IPv6的头部不完全是这样,但是4个比特含义一致) 首部长度:首部长度指的是首部占32bit字的数目,包括任何选项。因此IPv4首部最长为60个字节 服务类型:服务类型(TOS)字段包括一个3 bit的优先权子字段(现在已被忽略),4bit的TOS子字段和1...
网络层学习之三(选路算法,ARP)
一、RIP 在因特网中,AS即自制系统内部使用的两个选路协议是RIP(路由信息协议,Routinginformation Protocol)和OSPF(Open Shortcut Path First)。 RIP是一种距离向量协议,运行方式和理想化的DV算法相似。在RIP中,DV算法中的费用采用的是跳数,即从源路由器到目的路由器的最短路径上的路由器数。RIP中一条路径的最大跳数被限制为15,因此RIP被限制用在网络直径不超过15的自制系统内。DV算法需要在路由器之间发送每个路由器的距离向量信息,RIP通过RIP通告(也称为RIP响应报文)来完成这个功能,RIP通告大约30秒相互交换一次。RIP通告包含了选路更新信息。 每台路由器都维护有一张选路表,它包含了路由器的距离向量个该路由器的转发表。 运行RIP协议的路由器每隔30秒就会发送RIP通告,如果一台路由器超过180秒还没收到邻居的RIP通告,它就认为邻居不再可达。此时它会更新自己的距离向量,并向相邻路由器通告该信息。 RIP也允许路由器主动发送请求报文请求某个邻居更新其路由信息,这是通过发送RIP请求报文实现的。RIP协议使用...














