计算机网络基础
计算机网络简介
计算机网络(英语:computer network),通常也简称网络,是利用通信设备和线路将地理位置不同的、功能独立的多个计算机系统连接起来,以功能完善的网络软件实现网络的硬件、软件及资源共享和信息传递的系统。简单的说即连接两台或多台计算机进行通信的系统。
带宽和延迟:我们把网络比喻成公路,带宽大好比公路宽,可以跑的车也就多;而延迟可以可以看作是路况,延迟高说明路况不好,堵车。
网络的拓扑:
- 总线型
- 环状型
- 双环型
- 星型
- 扩展的星型
- 部分网状型
- 全网状型
网络通信模式:
- 单播:主机之间“一对一”的通讯模式
- 组播:主机之间“一对一组”的通讯模式
- 广播:主机之间“一对所有”的通讯模式
网络从范围可划分:
- 局域网:(Local Area Network),简称LAN,是指在某一区域内由多台计算机互联成的计算机组。
- 广域网:(Wide Area Network),简称WAN,是一种跨越大的、地域性的计算机网络的集合。
网络中的常用概念:
- 冲突域:如果一天机器发数据,另一台也在发数据,数据冲突了,那么这俩台机器在同一冲突域
- 广播域:一个主机向外发广播,其他主机收到广播就说明在一个广播域中,基于广播机制通信
OSI七层参考模型
开放式系统互联通信参考模型(英语:Open System Interconnection Reference Model,缩写为 OSI),简称为OSI模型(OSI model),一种概念模型,由国际标准化组织提出,一个试图使各种计算机在世界范围内互连为网络的标准框架。
七:应用层(Application Layer):提供为应用软件而设的接口,以设置与另一应用软件之间的通信。例如: HTTP,HTTPS,FTP,TELNET,SSH,SMTP,POP3等。
六:表示层(Presentation Layer):把数据转换为能与接收者的系统格式兼容并适合传输的格式。
五:会话层(Session Layer):负责在数据传输中设置和维护电脑网络中两台电脑之间的通信连接。
四:传输层(Transport Layer):把传输表头(TH)加至数据以形成数据包。传输表头包含了所使用的协议等发送信息。例如:传输控制协议(TCP)等。
三:网络层(Network Layer):决定数据的路径选择和转寄,将网络表头(NH)加至数据包,以形成分组。网络表头包含了网络数据。例如:互联网协议(IP)等。
二:数据链路层(Data Link Layer):负责网络寻址、错误侦测和改错。当表头和表尾被加至数据包时,会形成帧。数据链表头(DLH)是包含了物理地址和错误侦测及改错的方法。数据链表尾(DLT)是一串指示数据包末端的字符串。例如以太网、无线局域网(Wi-Fi)和通用分组无线服务(GPRS)等。
一:物理层(Physical Layer):在局部局域网上传送数据帧(data frame),它负责管理电脑通信设备和网络媒体之间的互通。包括了针脚、电压、线缆规范、集线器、中继器、网卡、主机适配器等。
PDU: Protocol Data Unit,协议数据单元是指对等层次之间传递的数据单位
- 物理层的 PDU是-------------数据位 bit
- 数据链路层的 PDU是-------数据帧 frame
- 网络层的PDU是--------------数据包 packet
- 传输层的 PDU是-------------数据段 segment
- 其他更高层次的PDU是-----消息 message
TCP/IP协议栈
是一个网络通信模型,以及一整个网络传输协议家族,为互联网的基础通信架构。它常被通称为TCP/IP协议族(英语:TCP/IP Protocol Suite,或TCP/IP Protocols),简称TCP/IP。因为该协议家族的两个核心协议:TCP(传输控制协议)和IP(网际协议),为该家族中最早通过的标准。由于在网络通讯协议普遍采用分层的结构,当多个层次的协议共同工作时,类似计算机科学中的堆栈,因此又被称为TCP/IP协议栈(英语:TCP/IP Protocol Stack)。这些协议最早发源于美国国防部(缩写为DoD)的ARPA网项目,因此也被称作DoD模型(DoD Model)。
一:网络接口层(Network Access)
对应OSI模型的物理层和数据链路层,下面总结一下工作在此层的设备及协议:
+工作在网络接口层的设备:
1、线缆
网络传输线缆有双绞线,同轴电缆和光纤,现在同轴电缆已经被淘汰了;双绞线的传输距离在100m以内,同轴电缆(细):<185m,同轴电缆(粗):<500m
双绞线可分为屏蔽式和非屏蔽式,屏蔽式双绞线孔干饶更好
双绞线线序:
- T568A:绿白,绿-橙白-蓝-蓝白-橙-棕白-棕
- T568B:橙白,橙-绿白-蓝-蓝白-绿-棕白-棕
双绞线还分为直通线和交叉线,相同类设备连接用交叉线,不同类设备用直连线,不过现在的网络设备可以只能识别收发
RJ-45:
如果速度在100Mdps以内使用1236线来传输,如果超过100Mdps到1000Mdps时使用全部线路传输,如果大于1000Mdps时使用八条线路全双工模式传输。
GBIC是Giga Bitrate Interface Converter的缩写,是将千兆位电信号转换为光信号的接口器件。
2、集线器(Hub)
集线器的主要功能是对接收到的信号进行再生整形放大,以扩大网络的传输距离,同时把所有节点集中在以它为中心的节点上。
集线器工作在物理层,不会记录MAC地址,hub中的设备共享网络带宽,半双工工作模式。
3、以太网桥
网桥工作在OSI模型中的物理层和数据链路层。
网桥(Bridge)是早期的两端口二层网络设备,用来连接不同网段。网桥的两个端口分别有一条独立的交换信道,不是共享一条背板总线,可隔离冲突域。
以太网桥可以监听和学习数据帧中的源MAC地址,建立MAC地址表,如果是未知的目标MAC则转发到监听端口外的所有端口,如果是MAC表中有的目标地址则会直接转发到相应的端口。
网桥转发所有广播报文,可以隔离冲突域,但是无法隔离广播域
4、交换机
交换机的工作原理和以太网桥相同。但是比网桥有更高级的功能
二层交换机工作于数据链路层。交换机内部的CPU会在每个端口成功连接时,通过将MAC地址和端口对应,形成一张MAC表。在今后的通讯中,发往该MAC地址的数据包将仅送往其对应的端口,而不是所有的端口。因此交换机可用于划分数据链路层广播,即冲突域;但它不能划分网络层广播,即广播域。
交换机端口的工作模式:Access(普通模式),Multi(多vlan模式),Trunk(中继模式)
- trunk模式的端口用于交换机与交换机
- Access多用于接入终端设备,如PC机、服务器、打印服务器等
以太网帧的结构:
Preamble:前导信息
Destination Address:目标MAC地址
Source Address:源MAC地址
Type:上层协议类型
Data:数据
FCS:校验位
MAC地址
物理地址(Physical Address),它是一个用来确认网络设备位置的地址。MAC地址用于在网络中唯一标示一个网卡,一台设备若有一或多个网卡,则每个网卡都需要并会有一个唯一的MAC地址。
MAC地址共48位(6个字节),以十六进制表示。前24位由IEEE决定如何分配,后24位由实际生产该网络设备的厂商自行指定。ff:ff:ff:ff:ff:ff则作为广播地址。
虚拟局域网(VLAN)
是一种建构于局域网交换技术(LAN Switch)的网络管理的技术,网管人员可以借此通过控制交换机有效分派出入局域网的数据包到正确的出入端口,达到对不同实体局域网中的设备进行逻辑分群(Grouping)管理,并降低局域网内大量数据流通时,因无用数据包过多导致拥塞的问题,以及提升局域网的信息安全保障。
VLAN的特点:
- 隔离广播域
- 带宽利用
- 降低延迟
- 安全性提高
- 管理灵活
二:网络互联层(Internet)
+工作在网络互联层的网络设备
路由器(Router)
提供路由与转送两种重要机制,可以决定数据包从来源端到目的端所经过的路由路径(host到host之间的传输路径),这个过程称为路由;将路由器输入端的数据包移送至适当的路由器输出端(在路由器内部进行),这称为转送。
路由工作在OSI模型的网络层
把一个数据包从一个设备发送到不同网络里的另一个设备上去。这些工作依靠路由器来完成。路由器只关心网络的状态和决定网络中的最佳路径。路由的实现依靠路由器中的路由表来完成。
路由器的负责:
- 分隔广播域
- 选择路由表中到达目标最好的路径
- 维护和检查路由信息
- 连接广域网
传输层(Transport)
1、传输控制协议(TCP)Transmission Control Protocol
是一种面向连接的、可靠的、基于字节流的传输层通信协议,由IETF的RFC 793定义。在简化的计算机网络OSI模型中,它完成第四层传输层所指定的功能
TCP的工作特性:
- 工作在传输层
- 面向连接协议
- 全双工协议
- 半关闭
- 错误检查
- 将数据打包成段,排序
- 确认机制
- 数据恢复,重传
- 流量控制,滑动窗口
- 拥塞控制,慢启动和拥塞避免算法
端口号:计算机上的进程要和其他进程通信是要通过计算机端口的,而一个计算机端口某个时刻只能被一个进程占用,所以通过指定源端口和目标端口,就可以知道是哪两个进程需要通信。
源端口和目的端口用16bit标识,最大标识2^16=65536 个端口
0-1023:系统端口
1024-29151:普通用户端口
49152-65535:客户段随机端口
常见应用的端口号
http 80
https 443
ftp 20/21
dns 53
tftp 69
smtp25
pop3 110
map 143
telnet 23
ssh 22
mysql 3306
oracle 1521
sql server 1433
[root@rhel6 ~]# cat /etc/services 查看当前已使用的所有协议及端口号
[root@rhel6 ~]# cat /proc/sys/net/ipv4/ip_local_port_range 查看客户端端口范围
序列号(序号):表示本报文段所发送数据的第一个字节的编号。在TCP连接中所传送的字节流的每一个字节都会按顺序编号。由于序列号由32位表示,所以每2^32个字节,就会出现序列号回绕,再次从 0 开始。
确认号:表示接收方期望收到发送方下一个报文段的第一个字节数据的编号。也就是告诉发送发:我希望你(指发送方)下次发送的数据的第一个字节数据的编号是这个确认号
数据偏移:表示TCP报文段的首部长度,共4位,由于TCP首部包含一个长度可变的选项部分,需要指定这个TCP报文段到底有多长。它指出 TCP 报文段的数据起始处距离 TCP 报文段的起始处有多远。该字段的单位是32位(即4个字节为计算单位),4位二进制最大表示15,所以数据偏移也就是TCP首部最大60字节
URG:表示本报文段中发送的数据是否包含紧急数据。后面的紧急指针字段(urgentpointer)只有当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首部长度用4位表示,选项部分最长为:(2^4-1)*4-20=40字节
常见选项:
- 最大报文段长度:Maxium Segment Size,MSS
- 指明自己期望对方发送TCP报文段时那个数据字段的长度。默认是536字节。数据字段的长度加上TCP首部的长度才等于整个TCP报文段的长度。MSS不宜设的太大也不宜设的太小。若选择太小,极端情况下,TCP报文段只含有1字节数据,在IP层传输的数据报的开销至少有40字节(包括TCP报文段的首部和IP数据报的首部)。这样,网络的利用率就不会超过1/41。若TCP报文段非常长,那么在IP层传输时就有可能要分解成多个短数据报片。在终点要把收到的各个短数据报片装配成原来的TCP报文段。当传输出错时还要进行重传,这些也都会使开销增大。因此MSS应尽可能大,只要在IP层传输时不需要再分片就行。在连接建立过程中,双方都把自己能够支持的MSS写入这一字段。 MSS只出现在SYN报文中。即:MSS出现在SYN=1的报文段中。
- 窗口扩大:Windows Scaling
- 为了扩大窗口,由于TCP首部的窗口大小字段长度是16位,所以其表示的最大数是65535。但是随着时延和带宽比较大的通信产生(如卫星通信),需要更大的窗口来满足性能和吞吐率,所以产生了这个窗口扩大选项。
- 时间戳:Timestamps
- 可以用来计算RTT(往返时间),发送方发送TCP报文时,把当前的时间值放入时间戳字段,接收方收到后发送确认报文时,把这个时间戳字段的值复制到确认报文中,当发送方收到确认报文后即可计算出RTT。也可以用来防止回绕序号PAWS,也可以说可以用来区分相同序列号的不同报文。因为序列号用32为表示,每2^32个序列号就会产生回绕,那么使用时间戳字段就很容易区分相同序列号的不同报文。
TCP的三次握手和四次挥手+++++++
- 由客户端发起tcp请求,SYN=1,seq=x,从而从CLOSED状态转变成SYNSEND状态,准备接受服务器的响应;
- 服务器收到SYN=1的包后回应一个SYN=1,ACK=1表示确认,序列号为y,确认号为x+1表示收到客户端的x包,服务器的状态从LISTEN转换成SYNRCVD,准备接受客户端的下一个确认包;
- 客户端收到服务器的响应,从而回复一个ACK=1确认包,seq=x+1表示发送自己的下一个包,ack=y+1表示收到了服务器的y包;
客户端发出确认包后从SYNSEND状态切换到ESTABLISHED(已连接状态);服务器收到ESTABLISHED(已连接状态),接下来就可以愉快的通信了。
当数据传输完成时需要断开连接,由客户端或者服务器,或者同时发起断开请求,我们下面只假设客户端发起分手请求来讨论:
- 客户端发起FIN=1表示断开请求包,seq=u自己的数据包序号,发出FIN包后立即从ESTABLISHED状态转换为FIN-WAIT-1状态,等待服务器的确认;
- 服务器收到FIN=1的包后,回应一条ACK=1的包,表示自己已经收到客户段的分手请求,从而转换为CLOSE-WAIT状态;客户端收到ACK=1的包后从FIN-WAIT-1状态转换为FIN-WAIT-2状态,继续等待服务器的同意请求;
- 当服务器继续发出FIN=1,ACK=1表示服务器同意分手,从而由CLOSE-WAIT状态切换到LAST-ACK状态,等待客户端的最后一次确认请求;
- 客户端收到FIN=1的包后再次发出一个最后的ACK=1确认包,从而转换从TIME-WAIT状态,等待2个MSL(一个包从客户端到服务器的时间为一个MSL时间)时间,确保服务器最后的包全部接受后转换成CLOSED状态;服务器收到最后的ACK=1包后也转换为CLOSED状态。
一次tcp的会话完成!
TCP的有限状态机+++++++
- CLOSED 没有任何连接状态
- LISTEN 侦听状态,等待来自远方TCP端口的连接请求
- SYN-SENT 在发送连接请求后,等待对方确认
- SYN-RECEIVED 在收到和发送一个连接请求后,等待对方确认
- ESTABLISHED 代表传输连接建立,双方进入数据传送状态
- FIN-WAIT-1 主动关闭,主机已发送关闭连接请求,等待对方确认
- FIN-WAIT-2 主动关闭,主机已收到对方关闭传输连接确认,等待对方发送关闭传输连接请求
- TIME-WAIT 完成双向传输连接关闭,等待所有分组消失
- CLOSE-WAIT 被动关闭,收到对方发来的关闭连接请求,并已确认
- LAST-ACK 被动关闭,等待最后一个关闭传输连接确认,并等待所有分组消失
- CLOSING 双方同时尝试关闭传输连接,等待对方确认
用户数据报协议(UDP)User Datagram Protocol
是一个简单的面向数据报的传输层协议
UDP特性:
- 工作在传输层
- 提供不可靠的网络访问
- 非面向连接协议
- 有限的错误检查
- 传输性能高
- 无数据恢复特性
互联网控制消息协议(ICMP)Internet Control Message Protocol
是互联网协议族的核心协议之一。它用于TCP/IP网络中发送控制消息,提供可能发生在通信环境中的各种问题反馈,通过这些信息,使管理者可以对所发生的问题作出诊断,然后采取适当的措施解决。
ICMP依靠IP来完成它的任务,它是IP的主要部分。它与传输协议(如TCP和UDP)显著不同:它一般不用于在两点间传输数据。它通常不由网络程序直接使用,除了ping和traceroute这两个特别的例子。
应用层(Application)
TCP/IP协议栈中把ISO七层模型中的会话层,表示层,应用层全部合为应用层。
运行在TCP协议上的协议:
- HTTP(Hypertext Transfer Protocol,超文本传输协议),主要用于普通浏览。
- HTTPS(Hypertext Transfer Protocol over Secure Socket Layer, or HTTP over SSL,安全超文本传输协议),HTTP协议的安全版本。
- FTP(File Transfer Protocol,文件传输协议),由名知义,用于文件传输。
- POP3(Post Office Protocol, version 3,邮局协议),收邮件用。
- SMTP(Simple Mail Transfer Protocol,简单邮件传输协议),用来发送电子邮件。
- TELNET(Teletype over the Network,网络电传),通过一个终端(terminal)登陆到网络。
- SSH(Secure Shell,用于替代安全性差的TELNET),用于加密安全登陆用。
运行在UDP协议上的协议:
- BOOTP(Boot Protocol,启动协议),应用于无盘设备。
- NTP(Network Time Protocol,网络时间协议),用于网络同步。
- DHCP(Dynamic Host Configuration Protocol,动态主机配置协议),动态配置IP地址。
IP地址
它们可唯一标识 IP 网络中的每台设备
每台主机(计算机、网络设备、外围设备)必须具有唯一的地址 IP地址由两部分组成:
• 网络ID:
• 标识网络 • 每个网段分配一个网络ID
• 主机 ID:
• 标识单个主机
• 由组织分配给各设备