网络知识笔记

文件名称网络知识笔记
编制部门后台运维
作者丁正凯
当前版本201807171203
受众范围运维学员

常见的网络物理组件

clipboard.png

网络的特征

速度 成本 安全性 可用性 可扩展性 可靠性

拓扑__

1、物理拓扑分类

物理拓扑描述了物理设备的布线方式

截图.png A、总线拓扑 定义:总线拓扑的网络结构是将网络中的各个节点设备用一根总线(如同轴电缆等)挂接起来,实现计算机网络的功能。任何连接在总线上的计算机都能在总线上发信号,并且所有计算机都能接收信号。 数据传输方式:总线拓扑的数据传输是广播式传输结构,数据发送给网络上的所有的计算机,只有计算机地址与信号中的目的地址相匹配的计算机才能接收到。采取分布式访问控制策略来协调网络上计算机数据的发送。 主要优点: (1)网络结构简单,节点的插入、删除比较方便,易于网络扩展。 (2)设备少、电缆长度短、造价低,安装和使用方便。 (3)具有较高的可靠性。因为单个节点的故障不会涉及整个网络。 缺点: (1)总线传输距离有限,通信范围受到限制。 (2)故障诊断和隔离比较困难。故障隔离困难。当节点发生故障,隔离起来还 比较方便,一旦传输介质出现故障时,就需要将整个总线切断。 (3)易于发生数据碰撞,线路争用现象比较严重。分布式协议不能保证信息的及时传送,不具有实时功能,站点必须有介质访问控制功能,从而增加了站点的硬件和软件开销。 (4)分布式协议不能保证信息的及时传送,不具有实时功能,站点必须有介质访问控制功能,从而增加了站点的硬件和软件开销。 适用场景:总线型拓扑结构适用于计算机数目相对较少的局域网络,通常这种局域网络、的传输速率在100Mbps,网络连接选用同轴电缆。主要适用于家庭、宿舍等网络规模较小的场所。总线型拓扑结构曾流行了一段时间,典型的总线型局域网有以太网。 B、环形拓扑 定义:环型拓扑是使用公共电缆组成一个封闭的环,各节点直接连到环上,信息沿着环按一定方向从一个节点传送到另一个节点。 组成:环接口一般由发送器、接收器、控制器、线控制器和线接收器组成。 数据传输:环型网中的数据按照设计主要是单向也可以双向传输(双向环)。由于环线公用,一个节点发出的信息必须穿越环中所有的环路接口,信息流的目的地址与环上某节点地址相符时,信息被该节点的环路接口所接收,并继续流向下一环路接口,一直流回到发送该信息的环路接口为止。 优点:(1)电缆长度短,只需要将各节点逐次相连。 (2)可使用光纤。光纤的传输速率很高,十分适合于环形拓扑的单方面传输。 (3)所有站点都能公平访问网络的其他部分,网络性能稳定。 缺点:(1)节点故障会引起全网故障,是因为数据传输需要通过环上的每一个 节点,如某一节点故障,则引起全网故障。 (2)节点的加入和撤出过程复杂。 (3)介质访问控制协议采用令牌传递的方式,在负载很轻时信道利用率相对较低。 C、星型拓扑 定义:在星型拓扑结构中,网络中的各节点通过点到点的方式连接到一个中央节点(又称中央转接站,一般是集线器或交换机)上,由该中央节点向目的节点传送信息。 结构特点:星型拓扑结构的网络属于集中控制型网络 中央节点的主要功能有三项: ·当要求通信的站点发出通信请求后,控制器要检查中央转接站是否有空闲的通路,被叫设备是否空闲,从而决定是否能建立双方的物理连接; ·在两台设备通信过程中要维持这一通路; ·当通信完成或者不成功要求拆线时,中央转接站应能拆除上述通道。 组成:集线器(HUB)或交换设备的硬件作为中央节点。 优点: 1)控制简单。任何一站点只和中央节点相连接,因而介质访问控制方法简单,致使访问协议也十分简单。易于网络监控和管理。 (2)故障诊断和隔离容易。中央节点对连接线路可以逐一隔离进行故障检测和定位,单个连接点的故障只影响一个设备,不会影响全网。 (3)方便服务。中央节点可以方便地对各个站点提供服务和网络重新配置。 缺点: (1)需要耗费大量的电缆,安装、维护的工作量也骤增。 (2)中央节点负担重,形成“瓶颈”,一旦发生故障,则全网受影响。 (3)各站点的分布处理能力较低。 分类: 星型拓扑 尽管物理星型拓扑的实施费用高于物理总线拓扑,然而星型拓扑的优势却使其物超所值。每台设备通过各自的线缆连接到中心设备,因此某根电缆出现问题时只会影响到那一台设备,而网络的其他组件依然可正常运行。这个优点极其重要,这也正是所有新设计的以太网都采用的物理星型拓扑的原因所在。 扩展星型拓扑 如果星型网络扩展到包含与主网络设备相连的其它网络设备,这种拓扑就称为扩展星型拓扑,比星型拓扑的复原能力更强 纯扩展星型拓扑的问题是:如果中心节点出现故障,网络的大部分组件就会被断开。 D、逻辑拓扑 逻辑拓扑描述了信息在网络中流动的方式 clipboard.png E、环拓扑 信号绕环传输 单一故障点 截图.png F、双环拓扑 信号沿相反方向传输 比单环的复原能力更强 组成:每一台网络设备连接有两条链路 clipboard.png G、全网状拓扑 容错能力强 实施成本高 clipboard.png H、部分网状拓扑 在容错能力与成本之间寻求平衡 clipboard.png 网络模型分层 clipboard.png OSI将计算机网络体系结构(architecture)划分为以下七层: 物理层: (二进制传输)为启动、维护以及关闭物理链路定义了电气规范、机械规范、过程规范和功能规范; 数据链路层: (访问介质) 定义如何格式化数据以便进行传输以及如何控制对网络的访问; 支持错误检测。 网络层: (数据传输) 路由数据包; 选择传递数据的最佳路径; 支持逻辑寻址和路径选择。 传输层: (传输问题) 确保数据传输的可能性; 建立、维护和终止虚拟电路; 通过错误检测和恢复; 信息流控制来保障可靠性。 会话层: (主机间通信) 建立、管理和终止在应用程序之间的会话 表示层: (数据表示) 确保接收系统可以读出该数据; 格式化数据; 构建数据; 协商用于应用层的数据传输语法; 提供加密。 应用层: (网络进程访问应用层) 为应用程序进程(例如:电子邮件、文件传输和终端仿真)提供网络服务; 提供用户身份验证。 对等通信 clipboard.png PDU -PDU: Protocol Data Unit,协议数据单元是指对等层次之间传递的数据单位 -物理层的 PDU是数据位 bit -数据链路层的 PDU是数据帧 frame -网络层的PDU是数据包 packet - 传输层的 PDU是数据段 segment -其他更高层次的PDU是消息 message 三种通讯模式 一、单播:信息的接收和传递只在两个节点之间进行,主机之间“一对一”的通讯模式,网络中的交换机和路由器对数据只进行转发不进行复制。如果10个客户机需要相同的数据,则服务器需要逐一传送,重复 10次相同的工作。 适用范围:单播方式较适合用户稀少的网络,不利于信息规模化发送 截图.png 二、广播:广播方式下,网络中所有用户都能接收到该信息,当网络中需求该信息的用户量很小时,网络资源利用率将非常低,带宽浪费严重。不需要这些信息的用户也会受到影响。 适用范围:广播方式较适合用户稠密的网络,信息安全性和有偿服务得不到保障。 广播的优点: 1. 网络设备简单,维护简单,布网成本低廉 2. 由于服务器不用向每个客户机单独发送数据,所以服务器流量负载极低。 截图.png 三、组播 组播的优点: 1. 需要相同数据流的客户端加入相同的组共享一条数据流,节省了服务器的负载。具备广播所具备的优点。 2. 由于组播协议是根据接受者的需要对数据流进行复制转发,所以服务端的服务总带宽不受客户接入端带宽的限制。IP协议允许有2亿6千多万个(268435456)组播,所以其提供的服务可以非常丰富。 3. 此协议和单播协议一样允许在Internet宽带网上传输。 组播的缺点: 1.与单播协议相比没有纠错机制,发生丢包错包后难以弥补,但可以通过一定的容错机制和QOS加以弥补。 2.现行网络虽然都支持组播的传输,但在客户认证、QOS等方面还需要完善,这些缺点在理论上都有成熟的解决方案,只是需要逐步推广应用到现存网络当中。 截图.png 局域网 定义:局域网(Local Area Network,LAN)是指在某一区域内由多台计算机互联成的计算机组。一般是方圆几千米以内。 功能:局域网可以实现文件管理、应用软件共享、打印机共享、工作组内的日程安排、电子邮件和传真通信服务等功能。 类型:局域网是封闭型的,可以由办公室内的两台计算机组成,也可以由一个公司内的上千台计算机组成。 决定局域网的主要技术要素为:网络拓扑,传输介质与介质访问控制方法。 组成:局域网由网络硬件(包括网络服务器、网络工作站、网络打印机、网卡、网络互联设备等)和网络传输介质,以及网络软件所组成。 主要特点是: 1、覆盖的地理范围较小,只在一个相对独立的局部范围内联,如一座或集中的建筑群内。 2、使用专门铺设的传输介质进行联网,数据传输速率高(10Mb/s~10Gb/s) 3、通信延迟时间短,可靠性较高 4、局域网可以支持多种传输介质。 LAN组成 一个局域网有4部分组成。   一、网络通信设备  网络通信设备由两大类组成。一类是专用的通信设备。主要是集线器,交换机,路由器,调制解调器。另一类是连接服务器、工作站、网络通信设备的通信介质。主要是同轴电缆、双绞线、光纤。通信介质在电路上连通专用通信设备、服务器和客户机,信息在通信介质上传输。   二、服务器  服务器的作用有两个。一是用来管理局域网,二是为网络中的用户提供共享数据。因此,服务器比客户机重要得多。和客户机相比,服务器应有较高的配置。通常,服务器具有运行速度快,内存容量大,可靠性高的特点。   三、客户机  供用户使用的计算机叫客户机,有时也称工作站。和服务器不同,对工作站的配置并无明确要求,完全由实际情况而定。从最低档的286机到高档的P4机都可以作为工作站。网络中的客户机可以互相通信,可以共享服务器上的数据。如果局域网连入Internet,客户机还可以上因特网。  四、网络软件系统  计算机系统有硬件系统和软件系统组成,网络也不列外。网络通信设备、服务器、客户机可以看作是网络的硬件系统,而网络协议和网络操作系统则组成了网络软件系统。  网络协议是计算机网络的语言,计算机通过网络协议进行互通。协议种类很多,TCP/IP协议是最常用的协议。  网络操作系统是建立在各主机操作系统之上的一种操作系统,用于实现在不同计算机之间的用户通信,实现网络管理与软件资源的共享,并向用户提供统一方便的网络接口,以方便用户使用网络。Netware、Unix、Windows 2000 Serner都是网络操作系统。网络操作系统一般安装在服务器上。 网络电缆接口 clipboard.png 【两边都用T568B 或者 T568A,是直通线; 一边用T568B一边用T568A,是交叉线】 非屏蔽式双绞线UTP UTP 直通线:1、2(TX)发送,3、6(RX)接收 UTP 交叉线:1、2(TX)发送,3、6(RX)接收 clipboard.png 反转线:两边线序完全调对,一边12345678,另一边是87654321 GBIC:转换器 Short wavelength (1000BASE-SX):短波 传播最远距离500米,比双绞线传输距离远 Long wavelength/long haul (1000BASE-LX/LH):长波 传播距离三公里 Extended distance (1000BASE-ZX):拓展波 传播距离远,几十公里,上百公里 网络适配器(网卡) 一般四个网卡 LAN标准 目标在前,源在后 clipboard.png Ethernet II帧格式:抓包一般去除前八个字节和后四个字节,只取中间字节:6、6、2和46-1500。 MAC地址 一、什么是Mac地址 MAC(Media Access Control或者Medium Access Control)地址,意译为媒体访问控制,或称为物理地址、硬件地址,用来定义网络设备的位置。 在OSI模型中,第三层网络层负责 IP地址,第二层数据链路层则负责 MAC地址。因此一个主机会有一个MAC地址,而每个网络位置会有一个专属于它的IP地址。 二、查看mac地址 1、ifconfig 2、 cat /etc/sysconfig/network-scripts/ifcfg-eth0 3、 cat /sys/class/net/eth0/address 4、dmesg |grep eth 或 dmesg |grep eth0 clipboard.png clipboard.png 三、物理地址 Windows下查看显示即为物理地址【ipconfig /all】 前八位是厂家固定分配地址 Mac地址 clipboard.png 截图.png CSMA/CD 定义:CSMA/CD(Carrier Sense Multiple Access/Collision Detection),即载波监听多路访问/冲突检测方法和CSMA/CA(Carrier Sense multiple Access/Collision Avoidance),即载波监听多路访问/冲突避免,都是争用型的介质访问控制协议,位于数据链路层,前者用于有线网络而后者用于无线网络。 工作原理:CSMA/CD应用在OSI7层里的数据链路层,它的工作原理是:发送数据前先监听信道是否空闲,若空闲则立即发送数据.在发送数据时,边发送边继续监听.若监听到冲突,则立即停止发送数据.等待一段随机时间,再重新尝试. 冲突域:A发出数据,D也发出数据,两者在网络中冲突,则两者在一个冲突域中。若两者没有发生冲突,则A和D没有在一个冲突域,分别属于不同的冲突域。一个冲突域中的机器越少越好。最多不能超过1024台电脑。 【标准以太网采用方法】 Hub集线器 Hub:多端口中继器 Hub并不记忆该信息包是由哪个MAC地址发出,哪个MAC地址在Hub的哪个端口。 Hub的特点: 共享带宽 半双工 以太网桥 交换式以太网的优势 • 扩展了网络带宽 • 分割了网络冲突域,使网络冲突被限制在最小的范围内 • 交换机作为更加智能的交换设备,能够提供更多用户所要求的功能:优先级、虚拟网、远程检测…… 以太网桥的工作原理 1)以太网桥监听数据帧中源MAC地址,学习MAC,建立MAC表 2)对于未知MAC地址,网桥将转发到除接收该帧的端口之外的所有端口 3) 当网桥接到一个数据帧时,如果该帧的目的位于接收端口所在网段上,它就过滤掉该数据帧;如果目的MAC地址在位于另外一个端口,网桥就将该帧转发到该端口 4) 当网桥接到广播帧时候,它立即转发到除接收端口之外的所有其他端口 【网桥可以隔断冲突域,不能隔断网络域】 【flood泛洪】 Hub和交换机比较 1、集线器属于OSI的第一层物理层设备,而网桥属于OSI的第二层数据链路层设备 2、从工作方式来看,集线器是一种广播模式,所有端口在一个冲 突域里面。网桥的可以通过端口隔离冲突 3、Hub是所有共享总线和共享带宽。网桥每个端口占一个带宽 交换机好处: 1、提升网络效率 2、工作在数据链路层(有Mac地址) 路由器 1、工作在网络层 2、为了实现路由,路由器需要做下列事情: 分隔广播域 选择路由表中到达目标最好的路径 维护和检查路由信息 连接广域网 路由 把一个数据包从一个设备发送到不同网络里的另一个设备上去。这些工作依靠路由器来完成。路由器只关心网络的状态和决定网络中的最佳路径。路由的实现依靠路由器中的路由表来完成。 查看路由表(两种方法) clipboard.png VLAN(虚拟局域网) 一、作用: clipboard.png 1-1 、VLAN分割广播域【AB和CD隔断,不能接收对方广播】 clipboard.png 2、 clipboard.png 3、stp协议 STP协议(生成树协议)逻辑上断开环路,防止二层网络的广播风暴的产生。 附: *************************************************************** clipboard.png 【同一局域网内访问其他IP的c盘】 *********************************************************************************** 分层的网络架构 截图.png TCP/IP协议栈 Transmission Control Protocol /Internet Protocol传输控制协议/因特网互联协议 1、定义: TCP/IP是一个Protocol Stack,包括TCP、IP、UDP、ICMP、RIP、TELNET、FTP、SMTP、ARP等许多协议 二、内容 1、最早发源于美国国防部(缩写为DoD)的因特网的前身ARPA网项目,1983年1月1日,TCP/IP取代了旧的网络控制协议NCP,成为今天的互联网和局域网的基石和标准,由互联网工程任务组负责维护 2、 共定义了四层 3、 和ISO参考模型的分层有对应关系 clipboard.png 【定义的四层】 三、TCP/IP 协议栈和 OSI 模型 截图.png 四、TCP/IP 应用层 截图.png 五、传输层 截图.png 六、可靠性vs高效性 clipboard.png 七、TCP特性 工作在传输层面向连接协议 全双工协议:双向传输 半关闭:单向关闭 错误检查:a发送100包,b收到则回复101.意味:收到第一百个包,希望发第101 个包。 将数据打包成段,排序 确认机制 数据恢复,重传 流量控制,滑动窗口 拥塞控制,慢启动和拥塞避免算法 八、TCP包头 clipboard.png 【服务器端端口是固定的,客户机端端口是随机的】 源端口、目标端口:计算机上的进程要和其他进程通信是要通过计算机端口的,而一个计算机端口某个时刻只能被一个进程占用,所以通过指定源端口和目标端口,就可以知道是哪两个进程需要通信。源端口、目标端口是用16位表示的,可推算计算机的端口个数为2^16个 序列号:表示本报文段所发送数据的第一个字节的编号。在TCP连接中所传送的字节流的每一个字节都会按顺序编号。由于序列号由32位表示,所以每2^32个字节,就会出现序列号回绕,再次从 0 开始 确认号:表示接收方期望收到发送方下一个报文段的第一个字节数据的编号。也就是告诉发送发:我希望你(指发送方)下次发送的数据的第一个字节数据的编号是这个确认号。 数据偏移:表示TCP报文段的首部长度,共4位,由于TCP首部包含一个长度可变的选项部分,需要指定这个TCP报文段到底有多长。它指出 TCP 报文段的数据起始处距离 TCP 报文段的起始处有多远。该字段的单位是32位(即4个字节为计算单位),4位二进制最大表示15,所以数据偏移也就是TCP首部最大60字节。 URG:表示本报文段中发送的数据是否包含紧急数据。后面的紧急指针字段(urgent pointer)只有当URG=1时才有效 ACK:表示是否前面的确认号字段是否有效。ACK=1,表示有效。只有当ACK=1时,前面的确认号字段才有效。TCP规定,连接建立后,ACK必须为1,带ACK标志的TCP报文段称为确认报文段 PSH:提示接收端应用程序应该立即从TCP接收缓冲区中读走数据,为接收后续数据腾出空间。如果为1,则表示对方应当立即把数据提交给上层应用,而不是缓存起来,如果应用程序不将接收到的数据读走,就会一直停留在TCP接收缓冲区中 RST:如果收到一个RST=1的报文,说明与主机的连接出现了严重错误(如主机崩溃),必须释放连接,然后再重新建立连接。或者说明上次发送给主机的数据有问题,主机拒绝响应,带RST标志的TCP报文段称为复位报文段 SYN:在建立连接时使用,用来同步序号。当SYN=1,ACK=0时,表示这是一个请求建立连接的报文段;当SYN=1,ACK=1时,表示对方同意建立连接。SYN=1,说明这是一个请求建立连接或同意建立连接的报文。只有在前两次握手中SYN才置为1,带SYN标志的TCP报文段称为同步报文段 FIN:表示通知对方本端要关闭连接了,标记数据是否发送完毕。如果FIN=1,即告诉对方:“我的数据已经发送完毕,你可以释放连接了”,带FIN标志的TCP报文段称为结束报文段。 九、TCP包头选项 窗口大小:表示现在充许对方发送的数据量,也就是告诉对方,从本报文段的确认号开始允许对方发送的数据量 校验和:提供额外的可靠性 紧急指针:标记紧急数据在数据字段中的位置 选项部分:其最大长度可根据TCP首部长度进行推算。TCP首部长度用4位表示,选项部分最长为:(2^4-1)*4-20=40字节 常见选项: 最大报文段长度:Maxium Segment Size,MSS 窗口扩大:Windows Scaling 时间戳: Timestamps 1 最大报文段长度 指明自己期望对方发送TCP报文段时那个数据字段的长度。默认是536字节。数据字段的长度加上TCP首部的长度才等于整个TCP报文段的长度。MSS不宜设的太大也不宜设的太小。若选择太小,极端情况下,TCP报文段只含有1字节数据,在IP层传输的数据报的开销至少有40字节(包括TCP报文段的首部和IP 数据报的首部)。这样,网络的利用率就不会超过1/41。若TCP报文段非常长,那么在IP层传输时就有可能要分解成多个短数据报片。在终点要把收到的各个短数据报片装配成原来的TCP报文段。当传输出错时还要进行重传,这些也都会使开销增大。因此MSS应尽可能大,只要在IP层传输时不需要再分片就行。在连接建立过程中,双方都把自己能够支持的MSS接入这一字段。 MSS只出现在SYN报文中。即:MSS出现在SYN=1的报文段中。 2 窗口扩大 为了扩大窗口,由于TCP首部的窗口大小字段长度是16位,所以其表示的最大数是65535。但是随着时延和带宽比较大的通信产生(如卫星通信),需要更大的窗口来满足性能和吞吐率,所以产生了这个窗口扩大选项。 3 时间戳 可以用来计算RTT(往返时间),发送方发送TCP报文时,把当前的时间值放入时间戳字段,接收方收到后发送确认报文时,把这个时间戳字段的值复制到确认报文中,当发送方收到确认报文后即可计算出RTT。也可以用来防止回绕序号PAWS,也可以说可以用来区分相同序列号的不同报文。因为序列号用32为表示,每2^32个序列号就会产生回绕,那么使用时间戳字段就很容易区分相同序列号的不同报文。 十、映射第四层到应用程序 clipboard.png 十一、TCP协议PORT 传输层通过port号,确定应用层协议 Port number: tcp:传输控制协议,面向连接的协议;通信前需要建立虚拟链路;结束后 拆除链路 0-65535 udp:User Datagram Protocol,无连接的协议0-65535 IANA:互联网数字分配机构(负责域名,数字资源,协议分配)0-1023:系统端口或特权端口(仅管理员可用) ,众所周知,永久的分配给固定的系统应用使用,22/tcp(ssh), 80/tcp(http), 443/tcp(https)1024-49151:用户端口或注册端口,但要求并不严格,分配给程序注册为某应用使用,1433/tcp(SqlServer),1521/tcp(oracle),3306/tcp(mysql),11211/tcp/udp (memcached) 49152-65535:动态端口或私有端口,客户端程序随机使用的端口 其范围的定义:/proc/sys/net/ipv4/ip_local_port_range【客户端端口号使用范围】 clipboard.png 附: 1、查看当前进程: clipboard.png 2、查看linux下常见应用的端口: cat /etc/services 十二—1、TCP三次握手 clipboard.png 【dos攻击方式:利用三次握手】 clipboard.png 十二----2、TCP四次挥手 clipboard.png 有限状态机FSM:Finite State Machine 1、-CLOSED 没有任何连接状态 2、-LISTEN 侦听状态,等待来自远方TCP端口的连接请求 3 -SYN-SENT 在发送连接请求后,等待对方确认 4-SYN-RECEIVED 在收到和发送一个连接请求后,等待对方确认 5- ESTABLISHED 代表传输连接建立,双方进入数据传送状态 6-FIN-WAIT-1 主动关闭,主机已发送关闭连接请求,等待对方确认 7 -FIN-WAIT-2 主动关闭,主机已收到对方关闭传输连接确认,等待对方发送关闭传输连接请求 8- TIME-WAIT 完成双向传输连接关闭,等待所有分组消失 9-CLOSE-WAIT 被动关闭,收到对方发来的关闭连接请求,并已确认 10-LAST-ACK 被动关闭,等待最后一个关闭传输连接确认,并等待所有分组消失 11-CLOSING 双方同时尝试关闭传输连接,等待对方确认 问题1】为什么连接的时候是三次握手,关闭的时候却是四次握手? 答:因为当Server端收到Client端的SYN连接请求报文后,可以直接发送SYN+ACK报文。其中ACK报文是用来应答的,SYN报文是用来同步的。但是关闭连接时,当Server端收到FIN报文时,很可能并不会立即关闭SOCKET,所以只能先回复一个ACK报文,告诉Client端,"你发的FIN报文我收到了"。只有等到我Server端所有的报文都发送完了,我才能发送FIN报文,因此不能一起发送。故需要四步握手。 【问题2】为什么TIME_WAIT状态需要经过2MSL(最大报文段生存时间)才能返回到CLOSE状态? 答:虽然按道理,四个报文都发送完毕,我们可以直接进入CLOSE状态了,但是我们必须假象网络是不可靠的,有可以最后一个ACK丢失。所以TIME_WAIT状态就是用来重发可能丢失的ACK报文。 客户端的典型状态转移 一、 客户端通过connect系统调用主动与服务器建立连接connect系统调用首先给服务器发送一个同步报文段,使连接转移到SYN_SENT状态。 此后connect系统调用可能因为如下两个原因失败返回: 1、如果connect连接的目标端口不存在(未被任何进程监听),或者该端口仍被处于TIME_WAIT状态的连接所占用(见后文),则服务器将给客户端发送一个复位报文段,connect调用失败。 2、如果目标端口存在,但connect在超时时间内未收到服务器的确认报文段,则connect调用失败。 connect调用失败将使连接立即返回到初始的CLOSED状态。如果客户端成功收到服务器的同步报文段和确认,则connect调用成功返回,连接转移至ESTABLISHED状态。 二、 当客户端执行主动关闭时,它将向服务器发送一个结束报文段,同时连接进入FIN_WAIT_1状态。若此时客户端收到服务器专门用于确认目的的确认报文段,则连接转移至FIN_WAIT_2状态。当客户端处于FIN_WAIT_2状态时,服务器处于CLOSE_WAIT状态,这一对状态是可能发生半关闭的状态。此时如果服务器也关闭连接(发送结束报文段),则客户端将给予确认并进入TIME_WAIT状态 客户端从FIN_WAIT_1状态可能直接进入TIME_WAIT状态(不经过FIN_WAIT_2状态),前提是处于FIN_WAIT_1状态的服务器直接收到带确认信息的结束报文段(而不是先收到确认报文段,再收到结束报文段)。 三、 __ 处于FIN_WAIT_2状态的客户端需要等待服务器发送结束报文段,才能转移至TIME_WAIT状态,否则它将一直停留在这个状态。如果不是为了在半关闭状态下继续接收数据,连接长时间地停留在FIN_WAIT_2状态并无益处。连接停留在FIN_WAIT_2状态的情况可能发生在:客户端执行半关闭后,未等服务器关闭连接就强行退出了。此时客户端连接由内核来接管,可称之为孤儿连接(和孤儿进程类似) Linux为了防止孤儿连接长时间存留在内核中,定义了两个内核参数 : /proc/sys/net/ipv4/tcp_max_orphans 指定内核能接管的 孤儿连接数目: /proc/sys/net/ipv4/tcp_fin_timeout 指定孤儿连接在内核中生存的时间 有效状态机客户端先发送一个FIN给服务端,自己进入了FIN_WAIT_1状态,这时等待接收服务端的报文,该报文会有三种可能: 只有服务端的ACK 只有服务端的FIN 基于服务端的ACK,又有FIN 1、只收到服务器的ACK,客户端会进入FIN_WAIT_2状态,后续当收到服务端的FIN时,回应发送一个ACK,会进入到TIME_WAIT状态,这个状态会持续2MSL(TCP报文段在网络中的最大生存时间,RFC 1122标准的建议值是2min).客户端等待2MSL,是为了当最后一个ACK丢失时,可以再发送一次。因为服务端在等待超时后会再发送一个FIN给客户端,进而客户端知道ACK已丢失 2、只有服务端的FIN时,回应一个ACK给服务端,进入CLOSING状态,然后接收到服务端的ACK时,进入TIME_WAIT状态 3、同时收到服务端的ACK和FIN,直接进入TIME_WAIT状态 有限状态机.png彩-有限状态机.jpgTCP 超时重传 1、异常网络状况下(开始出现超时或丢包),TCP控制数据传输以保证其承诺的可靠服务 2、TCP服务必须能够重传超时时间内未收到确认的TCP报文段。为此,TCP模块为每个TCP报文段都维护一个重传定时器,该定时器在TCP报文段第一次被发送时启动。如果超时时间内未收到接收方的应答,TCP模块将重传TCP报文段并重置定时器。至于下次重传的超时时间如何选择,以及最多执行多少次 重传,就是TCP的重传策略 3、与TCP超时重传相关的两个内核参数: /proc/sys/net/ipv4/tcp_retries1,指定在底层IP接管之前 TCP最少执行的重传次数,默认值是3 /proc/sys/net/ipv4/tcp_retries2,指定连接放弃前TCP最多可以执行的重传次数,默认值15(一般对应13~30min)。
拥塞控制一、定义 TCP为提高网络利用率,降低丢包率,并保证网络资源对每条 数据流的公平性。即所谓的拥塞控制 二、内容 TCP拥塞控制的标准文档是RFC 5681,其中详细介绍了拥塞控制的四个部分:慢启动(slow start)、拥塞避免(congestion avoidance)、快速重传(fast retransmit)和快速恢复(fast recovery)。拥塞控制算法在Linux下有多 种实现,比如reno算法、vegas算法和cubic算法等。它们或者部分或者全部实现了上述四个部分。 三、 当前所使用的拥塞控制算法 /proc/sys/net/ipv4/tcp_congestion_control UDP特性工作在传输层 提供不可靠的网络访问 非面向连接协议 有限的错误检查 传输性能高 无数据恢复特性 IP PDU报头截图.png版本:占4位,指 IP 协议的版本目前的IP协议版本号为4 首部长度:占4位,可表示的最大数值是15个单位,一个单位为4字节,因此IP 的首部长度的最大值是60字节 区分服务:占8位,用来获得更好的服务,在旧标准中叫做服务类型,但实际上一直未被使用过.后改名为区分服务.只有在使用区分服务 (DiffServ)时,这个字段才起作用.一般的情况下都不使用 总长度:占16位,指首部和数据之和的长度,单位为字节,因此数据报的最大长度为 65535 字节.总长度必须不超过最大传送单元 MTU 标识:占16位,它是一个计数器,通常,每发送一个报文,改值会加1, 也用于数据包分片,在同一个包的若干分片中,该值是相同的 标志(flag):占3位,目前只有后两位有意义 DF: Don‘t Fragment,中间的一位,只有当 DF=0 时才允许分片 MF: More Fragment,最高位,MF=1表示后面还有分片。MF=0表示最后一个分片。 片偏移:占12位,指较长的分组在分片后,该分片在原分组中的相对位置.片偏移以8个字节为偏移单位。 生存时间:占8位,记为TTL (Time To Live) 数据报在网络中可通过的路由器数的最大值,TTL 字段是由发送端初始设置一个 8 bit字段.推荐的初始值由分配数字 RFC 指定,当前值为64.发送 ICMP 回显应答时经常把 TTL 设为最大值 255 协议:占8位,指出此数据报携带的数据使用何种协议以便目的主机的IP层将数据部分上交给哪个处理过程, 1表示为 ICMP协议, 2表示为 IGMP 协议, 6表示为 TCP 协议, 17表示为UDP 协议 首部检验和:占16位,只检验数据报的首部不检验数据部分.这里不采用 CRC 检验码而采用简单的计算方法。 源地址和目的地址:都各占4字节,分别记录源地址和目的地址 IP PDU 报头示例clipboard.png协议域clipboard.pngIP地址 1、它们可唯一标识 IP 网络中的每台设备 2、每台主机(计算机、网络设备、外围设备)必须具有唯一的地址 IP地址由两部分组成: • 网络ID: • 标识网络 • 每个网段分配一个网络ID • 主机 ID: • 标识单个主机 • 由组织分配给各设备 截图.pngIP地址分类 A类: 0 000 0000 - 0 111 1111: 1-127 网络数:126, 127 每个网络中的主机数:2^24-2 默认子网掩码:255.0.0.0 私网地址:10.0.0.0 B类: 10 00 0000 - 10 11 1111:128-191 网络数:2^14 每个网络中的主机数:2^16-2 默认子网掩码:255.255.0.0 私网地址:172.16.0.0-172.31.0.0 C类: 110 0 0000 - 110 1 1111: 192-223 网络数:2^21 每个网络中的主机数:2^8-2 默认子网掩码:255.255.255.0 私网地址:192.168.0.0-192.168.255.0 D类:组播 1110 0000 - 1110 1111: 224-239 E类: 240-255 截图.png截图.png特殊地址1、0.0.0.00.0.0.0不是一个真正意义上的IP地址。它表示一个集合:所有不清楚的主机和目的网络。 2、255.255.255.255限制广播地址。对本机来说,这个地址指本网段内(同一广播域)的所有主机 3、127.0.0.1~127.255.255.254本机回环地址,主要用于测试。在传输介质上永远不应该出现目的地址为 “127.0.0.1”的 数据包。 4、224.0.0.0到239.255.255.255组播地址,224.0.0.1特指所有主机,224.0.0.2特指所有路由器。 224.0.0.5指OSPF 路由器,地址多用于一些特定的程序以及多媒体程序 5、169.254.x.x如果Windows主机使用了DHCP自动分配IP地址,而又无法从DHCP服务器获取地址,系统会为主机分配这样地址。 子网掩码公式 1 主机数=2^主机ID位-2 2 网络数=2^可变的网络ID位 3 网络ID=IP和netmask 相与 4 划分子网数=2^网络ID向主机ID借的位数 5 损失IP=2*(划分子网数-1) 跨网络通信 跨网络通信:路由 路由分类: 主机路由 网络路由 默认路由 优先级:精度越高,优先级越高 基本网络配置将Linux主机接入到网络,需要配置网络相关设置。 一般包括如下内容:__ 主机名 IP/netmask 路由:默认网关 DNS服务器 主DNS服务器 次DNS服务器 第三DNS服务器