计算机网络专题
Posted coderlin_
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了计算机网络专题相关的知识,希望对你有一定的参考价值。
osi七层模型
- open System Interconnection 适用于所有网络
- 分层带来效能,将复杂的流程分解为几个功能相对单一的子进程。就好比以前项目之后服务器渲染,现在都分为了前端后端等。
- 从下往上:物理层: 网卡,网线 (比特)
- 数据链路层: 交换机(传输数据,确认帧,发错重传)(数据帧)
- 网络层:路由器(处理网络间路由)(数据包)
- 传输层: TCP/UDP,提供可靠的连接传输数据功能(在不可靠的网络层上建立可靠的传输)。(数据段)
- 会话层:验证,会话管理,维护应用之间通信,发起会话 (消息)
- 表示层: 格式转换服务器,如加密压缩
- 应用层:HTTP, (网络与用户软件之间的接口服务)
下层是为上层服务的
例子方便理解:
案例:写信给远方的朋友。
- 应用层:写信
- 表示层:将信塞入信封写上邮寄地址。
- 会话层:建立,管理连接。快递员看到地址后,就知道送去哪了。
- 传输层:将信封打包成包裹 ,再将单号打印上去(TCP头部)
- 网络层(ip层):寻址,找到两个地址之间最快的道路
- 数据链路层:快递员开始传输数据
- 物理层:装修好的道路,让快递员可以传输数据。
TCP/IP参考模型
OSI只是一个参考模型,一般使用多都是TCP/IP模型,早期的TCP/IP是四层模型。
- 网络接口层(数据链路层+物理层),网络层,传输层,应用层(会话层+表示层+应用层)。
后来在使用的时候,借鉴OSI,形成五层结构
- 物理层,数据链路层,网络层,传输层,应用层。
协议的概念和作用
每一层都会有很多协议,像应用层的HTTP,FTP等等,传输层的TCP/UDP等等。
- 为了能让计算机进行通信,计算机需要定义通信的规则,这些规则就是协议。
- 规则是多种,协议也有多种
- 协议就是数据封装格式(每一层加对应的头部)+传输
网络接口层
网络接口层是TCP/IP模型的最底层,负责接收上一层的数据并将数据包传送出去。
网络接口层又分物理层和数据链路层
物理层 ,网线,网卡(比特)
- 物理层为数据传输提供可靠的环境。
- 计算机传递的是0和1,而物理层关心用什么信号表示0和1。
物理层是主要定义物理设备标准,如网线的接口类型、光纤的接口类型、各种传输介质的传输速率等。它的主要作用是传输比特流(就是由1、0转化为电流强弱来进行传输,到达目的地后在转化为1、0,也就是我们常说的数模转换与模数转换(曼彻斯特编码))。这一层的数据叫做比特。
数据链路层(帧)
- 定义了如何让格式化数据以进行传输,以及如何让控制对物理介质的访问。这一层通常还提供错误检测和纠正,以确保数据的可靠传输。
例子:
- 大学时候两台笔记本没有网络,怎么互相联机打cs?买一条网线将两台电脑连接起来。这时候只用到了物理层,数据链路层。数据在网线之间传递。
- 后来又来一台电脑,那么就不能使用网线两两互联了,就出现网络总线的概念。
以太网
- 以太网是一种计算机局域网技术,规定了包括物理层的连线,电子信号和介质访问层协议的内容。
- 以太网的标准拓扑结构就是总线型拓扑。
总线型拓扑
- 采用该单根传输作共用的传输介质,将网络中所有的计算机通过硬件接口和电缆,直接连接到这跟共享的总线上。
网络总线并不安全,所有在该线上的电脑均可劫持数据,后来就出现了交换机的概念(二层设备,在数据链路层上工作),它会将对应的请求转发到对应的电脑(通过什么判断请求呢?就是计算机的MAC地址)
交换机与路由器
- 交换机在数据链路层上,寻址通过MAC地址
- 路由器在网络层上,通过ip地址寻址
MAC地址(可以想象成你家庭的地址,是唯一的吧)
- 通信过程中,都是使用内置的网卡,用网卡内的地址来标识计算机的身份。
- 每个网卡都有一个全球唯一的地址来标识自己,不会重复。
- MAC地址由48位的二进制组成。通过分为6段,用16进制表示。
以太网的数据格式 帧
网络层传下来的数据包,再在前面加上以太网报头(以MAC地址说明源地址和目的地址),由一个检验码结尾,检验是否损坏。
然后插上一个八字节的由前导码和帧开始符组成的字节,就是一个以太网MAC帧
ARP协议
- 地址解析协议,根据
ip地址
获取物理地址MAC地址
的一个TCP/IP协议
以太网&因特网; 以太网,局域网。
- 以太网和局域网的区别:
- 所谓以太网,是一种总线型局域网,而局域网的拓扑结构包括星形、树形、环形和总线型,所以以太网一定是局域网,而局域网不一定是以太网。但现在大多数局域网都hi总线型的,所以也可以称为以太网。
- 以太网和因特网的区别
- 以太网是一种局域网,只能连接附近的设备,因特网是广域网,我们可以通过因特网连接到美国 去得到消息
- 以太网就是把你家的电脑,笔记本连接到猫上,然后再通过猫连接到因特网上去,这样你才能与远在他方的朋友网络交谈。世界上有成千上万个以太网。
网络层(路由器),数据包
- 位于传输层和数据链路层之间,用于把数据从源主机经过若干个中间节点传送到目标主机,并向传输层提供最基础的数据传输服务,他要提供路由和选址得工作。
选址
- 最终通信还是靠Mac地址,但是选址就是靠ip地址了。
可以理解成Mac地址是身份证号,而只知道Mac地址无法知道在哪个位置,就得借助ip地址了。 - ip地址就相当于你得家挺地址。通过ip地址找到计算机的大概位置,通过Mac地址精准找到计算机。
路由
在多条道路中选择一条最短的路劲,就是路由的工作。多个路由确定最近得路线
以上面得例子,通过ip地址知道你家庭地址后,那哪条路最快呢?就是路由做的事情。
IP
在网络中,每台计算机都有一个唯一得地址,称为IP地址
IP头部
- 版本:IPv4
- TTL: 表示路由转发的次数,防止死循环。
- 源地址: IP地址
- 目标地址: 目标IP地址
- 数据:传输层传递下来的数据。
IP地址格式
- IP地址是一个网络编码,用来确定网络中的一个节点。
- IP地址是由32位二进制(32bit组成)
IP地址组成
- 网络部分(NETWORK),用来标识不同的网络。好比广东省
- 主机部分 (HOST),用来标识在一个网络中特定的主机。 好比深圳市
IP地址的分类
- IP地址的网络部分是由Internet地址分配机构来统一分配的,这样可以保证IP的唯一性。
- IP地址中全为1的ip即255.255.255.255。他称为限制广播地址。如果将它作为数据包的目标地址,可以理解为发送到所有网络的所有主机。
- ip地址全为0的ip为0.0.0.0,他表示启动时的ip地址,其含义是尚未分配时的ip地址。(全为1和全为0的地址都不能用)
- 127是用来进行本机测试的,除了127.255.255.255,其他的127开头的地址都代表本机。
- A类地址只有126, 2的7次方-2个 ,如果你买了A类IP地址,那么你的局域网可以容纳2的24次方-2台主机,主机占24位,都为1和都为0不可以用。所以要减2。
- B类地址,前面两位从10开始,范围是128 - 191,购买了一个B类IP地址的话,局域网可以容纳2^16-2台主机。
- C类地址,前面三位是110开始,范围是1920223,而最大的主机数才2^8-2台主机。
公有地址和私有地址
A类私有IP的范围是:10.0.0.0 - 10.255.255.255
B类私有IP的范围是:172.16.0.0-172.31.255.255
C类私有IP的范围是:192.168.0.0-192.168.255.255
其他范围的IP均为公有IP地址。
私有IP就是只能出现在局域网内,不能出现在互联网的IP。
子网掩码
为什么IP地址才2^32次方-2个,但是全球却很多人都在用局域网,其实靠的就是子网。
- 子网掩码又叫子网络遮罩,它是一种用来执行一个IP地址的哪些位标识是主机所在的子网。以及哪些标识是主机位的掩码。
- 子网掩码只有一个租用,就是将某个IP地址划分成网络地址和主机地址两部分。
- 子网掩码也是一个32进制位,对应的网络部分全用1,对应的IP地址部分全用0.
- IP地址和子网掩码做逻辑与运算得到网络地址,0与任何数相与都是0,1和任何数相与都是任何数本身。
- A,B,C三类都有自己默认的子网掩码、A:255.0.0.0-------B:255.255.0.0--------C:255.255.255.0
例子:为C类地址应用子网掩码。
IP地址为192.168.5.139
子网掩码:255.255.255.224。
那么
该子网掩码与IP地址相与后得到的子网就是192.168.5.128。
那么该子网的第一台主机就是 192.168.5.129
192.168.5.10011111就是定向广播地址,都为1.
最后一台主机就是192.168.5.10011110。
那么192.168.5.10100000就是下一个子网了。
如
要判断A和C是否属于同一子网,只需要将A和C的地址与子网掩码相与,得到的值就是IP地址,若IP地址一样,那么就属于同一子网,就可以通信。
传输层
- 位于应用层和网络接口层之间
- 是面向连接的,可靠的进程到进程通信的协议。
- TCP提供全双工服务,即数据可在同一时间双向传播。
- TCP将若干个字节构成一个分组,此分组称为报文段。
- 对可靠性要求高的上层协议,实现可靠性的保证,网络层只管传递数据,成功与否并不关心。
传输层功能:
- 提供端到端的连接。
协议分类
- TCP(transimision Control Protocal)传输控制协议,可靠,面向连接,传输效率低。
- UDP(User Datagram Protocal)用户数据报协议,不可靠,无连接,传输效率高。
TCP
- 将数据进行分段打包传输
- 对每个数据包编号控制顺序
- 运输中丢失,重发和丢弃处理。
- 流量控制避免阻塞。
TCP数据包封装。
- 源端口号和目标端口号,计算机通过端口号识别哪个服务,比如http/ftp,发送方端口号是进行随机端口,目标端口号决定了接收方哪个程序来接收。
- 32位序列号是用来进行分包的时候,用来标记序列的。
- 32位确认号就是接收方接收到数据之后,就会发送确认信号给发送方。保证可靠传输。
- URG:优先级比较高的包
- ACK: 响应
- RSH: 一般设置为true,表示推送数据
- RST: 重置连接
- SYN: 同步连接,与对方建立连接。
- FIN:断开连接、
- 16位窗口大小,如果窗口越大,同一时间内发送的数据越多。窗口越小,同一时间内发送的数据越少。
- 16位校验和,用来进行差错控制,头部取反加一起就是16位校验和。接收到获取到头部之后再全部取反加一起,如果一样就符合,不一样就丢弃。
控制位
- 窗口检测,当服务端窗口拥挤的时候,返回的窗口大小为0,那么客户端就需要发起窗口检测
三次握手,四次断开
- TCP是面向连接的协议,在源点和终点之间建立虚拟连接。
- TCP的每一方都是由一个IP地址和一个端口组成。
建立连接,三次握手
- 客户端,SYN_SENT状态,发送SYN seq = x (x是随机数,也就是序列号);SYN告诉服务端,我要建立连接,然后我的序列号是x,期待你下次返回x+1
- 服务端刚开始是lISTEN状态,收到客户端建立连接的请求之后,变成SYN_RCVD状态。
- 然后返回SYN seq=y, ACK = x+1;
- SYN告诉客户端,我也要同步跟你建立连接,seq表示序列号,期待下次你发送的序列号为seq+1; 发送 ACK是对客端请求的确认序列号,他得值就是x+1。
- 客户端收到服务的返回之后,发送ACK=y+1给服务端,y是服务端发送过来的序列号。y+1表示回应。
- 这样就开始连接了。
传输数据
首先,
- 客户端向服务器发送hello。此时seq = x+1 = 0+1 = 1, Ack=y+1=0+1=1(客户端收到的服务端发送的seq=1也就是y=1),发送hello,长度为5
- 服务端回复收到信号,seq=1,Ack=x+Len = 6,确认序列号等于seq+Len
- 接着服务端响应hello。也是seq=1,但是ACK=6,Len=5。
- 客户端会回复收到信号,注意,seq此时等于seq+Len,ACK不变。所以是seq=6,Ack=1。
四次挥手
- 客户端发送断开连接。FIN seq = 6,Ack=6。
- 服务端回复收到信号,seq=6,ACK = 7,只有ACK,表示收到信号。
- 服务端发送断开连接,FIN seq = 6, ACK=7
- 客户端回复收到信号,seq=7, ACK = 7,只有Seq改变,表示客户端收到信号,不会直接关闭,等待一阵子,怕有些数据没有收到
序列号的规则。
以上是关于计算机网络专题的主要内容,如果未能解决你的问题,请参考以下文章