文件名称 网络知识笔记 编制部门 后台运维 作者 丁正凯 当前版本 201807171203 受众范围 运维学员
网络的特征
速度 成本 安全性 可用性 可扩展性 可靠性
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、逻辑拓扑
逻辑拓扑描述了信息在网络中流动的方式
E、环拓扑
信号绕环传输
单一故障点
F、双环拓扑
信号沿相反方向传输
比单环的复原能力更强
组成:每一台网络设备连接有两条链路
G、全网状拓扑
容错能力强
实施成本高
H、部分网状拓扑
在容错能力与成本之间寻求平衡
网络模型分层
OSI将计算机网络体系结构(architecture)划分为以下七层:
物理层: (二进制传输)为启动、维护以及关闭物理链路定义了电气规范、机械规范、过程规范和功能规范;
数据链路层: (访问介质)
定义如何格式化数据以便进行传输以及如何控制对网络的访问;
支持错误检测。
网络层: (数据传输)
路由数据包;
选择传递数据的最佳路径;
支持逻辑寻址和路径选择。
传输层: (传输问题)
确保数据传输的可能性;
建立、维护和终止虚拟电路;
通过错误检测和恢复;
信息流控制来保障可靠性。
会话层: (主机间通信)
建立、管理和终止在应用程序之间的会话
表示层: (数据表示)
确保接收系统可以读出该数据;
格式化数据;
构建数据;
协商用于应用层的数据传输语法;
提供加密。
应用层: (网络进程访问应用层)
为应用程序进程(例如:电子邮件、文件传输和终端仿真)提供网络服务;
提供用户身份验证。
对等通信
PDU
-PDU: Protocol Data Unit,协议数据单元是指对等层次之间传递的数据单位
-物理层的 PDU是数据位 bit
-数据链路层的 PDU是数据帧 frame
-网络层的PDU是数据包 packet
- 传输层的 PDU是数据段 segment
-其他更高层次的PDU是消息 message
三种通讯模式
一、单播:信息的接收和传递只在两个节点之间进行,主机之间“一对一”的通讯模式,网络中的交换机和路由器对数据只进行转发不进行复制。如果10个客户机需要相同的数据,则服务器需要逐一传送,重复 10次相同的工作。
适用范围:单播方式较适合用户稀少的网络,不利于信息规模化发送
二、广播:广播方式下,网络中所有用户都能接收到该信息,当网络中需求该信息的用户量很小时,网络资源利用率将非常低,带宽浪费严重。不需要这些信息的用户也会受到影响。
适用范围:广播方式较适合用户稠密的网络,信息安全性和有偿服务得不到保障。
广播的优点:
1. 网络设备简单,维护简单,布网成本低廉
2. 由于服务器不用向每个客户机单独发送数据,所以服务器流量负载极低。
三、组播
组播的优点:
1. 需要相同数据流的客户端加入相同的组共享一条数据流,节省了服务器的负载。具备广播所具备的优点。
2. 由于组播协议是根据接受者的需要对数据流进行复制转发,所以服务端的服务总带宽不受客户接入端带宽的限制。IP协议允许有2亿6千多万个(268435456)组播,所以其提供的服务可以非常丰富。
3. 此协议和单播协议一样允许在Internet宽带网上传输。
组播的缺点:
1.与单播协议相比没有纠错机制,发生丢包错包后难以弥补,但可以通过一定的容错机制和QOS加以弥补。
2.现行网络虽然都支持组播的传输,但在客户认证、QOS等方面还需要完善,这些缺点在理论上都有成熟的解决方案,只是需要逐步推广应用到现存网络当中。
局域网
定义:局域网(Local Area Network,LAN)是指在某一区域内由多台计算机互联成的计算机组。一般是方圆几千米以内。
功能:局域网可以实现文件管理、应用软件共享、打印机共享、工作组内的日程安排、电子邮件和传真通信服务等功能。
类型:局域网是封闭型的,可以由办公室内的两台计算机组成,也可以由一个公司内的上千台计算机组成。
决定局域网的主要技术要素为:网络拓扑,传输介质与介质访问控制方法。
组成:局域网由网络硬件(包括网络服务器、网络工作站、网络打印机、网卡、网络互联设备等)和网络传输介质,以及网络软件所组成。
主要特点是:
1、覆盖的地理范围较小,只在一个相对独立的局部范围内联,如一座或集中的建筑群内。
2、使用专门铺设的传输介质进行联网,数据传输速率高(10Mb/s~10Gb/s)
3、通信延迟时间短,可靠性较高
4、局域网可以支持多种传输介质。
LAN组成
一个局域网有4部分组成。
一、网络通信设备
网络通信设备由两大类组成。一类是专用的通信设备。主要是集线器,交换机,路由器,调制解调器。另一类是连接服务器、工作站、网络通信设备的通信介质。主要是同轴电缆、双绞线、光纤。通信介质在电路上连通专用通信设备、服务器和客户机,信息在通信介质上传输。
二、服务器
服务器的作用有两个。一是用来管理局域网,二是为网络中的用户提供共享数据。因此,服务器比客户机重要得多。和客户机相比,服务器应有较高的配置。通常,服务器具有运行速度快,内存容量大,可靠性高的特点。
三、客户机
供用户使用的计算机叫客户机,有时也称工作站。和服务器不同,对工作站的配置并无明确要求,完全由实际情况而定。从最低档的286机到高档的P4机都可以作为工作站。网络中的客户机可以互相通信,可以共享服务器上的数据。如果局域网连入Internet,客户机还可以上因特网。
四、网络软件系统
计算机系统有硬件系统和软件系统组成,网络也不列外。网络通信设备、服务器、客户机可以看作是网络的硬件系统,而网络协议和网络操作系统则组成了网络软件系统。
网络协议是计算机网络的语言,计算机通过网络协议进行互通。协议种类很多,TCP/IP协议是最常用的协议。
网络操作系统是建立在各主机操作系统之上的一种操作系统,用于实现在不同计算机之间的用户通信,实现网络管理与软件资源的共享,并向用户提供统一方便的网络接口,以方便用户使用网络。Netware、Unix、Windows 2000 Serner都是网络操作系统。网络操作系统一般安装在服务器上。
网络电缆接口
【两边都用T568B 或者 T568A,是直通线;
一边用T568B一边用T568A,是交叉线】
非屏蔽式双绞线UTP
UTP 直通线:1、2(TX)发送,3、6(RX)接收
UTP 交叉线:1、2(TX)发送,3、6(RX)接收
反转线:两边线序完全调对,一边12345678,另一边是87654321
GBIC:转换器
Short wavelength (1000BASE-SX):短波
传播最远距离500米,比双绞线传输距离远
Long wavelength/long haul (1000BASE-LX/LH):长波
传播距离三公里
Extended distance (1000BASE-ZX):拓展波
传播距离远,几十公里,上百公里
网络适配器(网卡)
一般四个网卡
LAN标准
目标在前,源在后
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
三、物理地址
Windows下查看显示即为物理地址【ipconfig /all】
前八位是厂家固定分配地址
Mac地址
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、为了实现路由,路由器需要做下列事情:
分隔广播域
选择路由表中到达目标最好的路径
维护和检查路由信息
连接广域网
路由
把一个数据包从一个设备发送到不同网络里的另一个设备上去。这些工作依靠路由器来完成。路由器只关心网络的状态和决定网络中的最佳路径。路由的实现依靠路由器中的路由表来完成。
查看路由表(两种方法)
VLAN(虚拟局域网)
一、作用:
1-1 、VLAN分割广播域【AB和CD隔断,不能接收对方广播】
2、
3、stp协议
STP协议(生成树协议)逻辑上断开环路,防止二层网络的广播风暴的产生。
附:
***************************************************************
【同一局域网内访问其他IP的c盘】
***********************************************************************************
分层的网络架构
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参考模型的分层有对应关系
【定义的四层】
三、TCP/IP 协议栈和 OSI 模型
四、TCP/IP 应用层
五、传输层
六、可靠性vs高效性
七、TCP特性
工作在传输层面向连接协议
全双工协议:双向传输
半关闭:单向关闭
错误检查:a发送100包,b收到则回复101.意味:收到第一百个包,希望发第101 个包。
将数据打包成段,排序
确认机制
数据恢复,重传
流量控制,滑动窗口
拥塞控制,慢启动和拥塞避免算法
八、TCP包头
【服务器端端口是固定的,客户机端端口是随机的】
源端口、目标端口:计算机上的进程要和其他进程通信是要通过计算机端口的,而一个计算机端口某个时刻只能被一个进程占用,所以通过指定源端口和目标端口,就可以知道是哪两个进程需要通信。源端口、目标端口是用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个序列号就会产生回绕,那么使用时间戳字段就很容易区分相同序列号的不同报文。
十、映射第四层到应用程序
十一、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【客户端端口号使用范围】
附:
1、查看当前进程:
2、查看linux下常见应用的端口: cat /etc/services
十二—1、TCP三次握手
【dos攻击方式:利用三次握手】
十二----2、TCP四次挥手
有限状态机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状态
TCP 超时重传 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报头版本:占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 报头示例协议域IP地址 1、它们可唯一标识 IP 网络中的每台设备
2、每台主机(计算机、网络设备、外围设备)必须具有唯一的地址
IP地址由两部分组成: • 网络ID:
• 标识网络
• 每个网段分配一个网络ID
• 主机 ID:
• 标识单个主机
• 由组织分配给各设备
IP地址分类 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
特殊地址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服务器