计算机网络专题

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改变,表示客户端收到信号,不会直接关闭,等待一阵子,怕有些数据没有收到


    序列号的规则。

以上是关于计算机网络专题的主要内容,如果未能解决你的问题,请参考以下文章

如何判断一个数是不是是2的N次方

怎么判断IP是不是能ping通?

easypower of 2,3,4

专题训练 二分归并排序

IP地址子网划分

用JAVA语言计算算式: 1+2的1次方+2的2次方+2的3次方+…+2的n次方