计算机网络以及TCP/IP相关知识简析

计算机网络以及相关名词

1. 互联网的初始

“互联网”和互连网其实是两个不同的概念,互连网是指计算机网络技术,而“互联网”则是指基于互连网技术产生的产品,也就是现今最大的互连网。当然二者的区别并不重要,在平时,这两者也经常混用。

我们所说的网络根据其覆盖范围可大致分为局域网(LAN)、城域网(MAN)以及广域网(WAN),各种不同的网络由路由器这样的设备连接起来,这样一来,由网络构成的网络就形成了我们现在熟知的互联网。

以太网是指一种局域网技术,是目前局域网普遍采用的技术,采用广播的方式进行不可靠数据传输,但是由于局域网的信道质量很好,因此差错比较少。

WLAN & VLAN

先说vlan,vlan是指虚拟局域网,由于局域网技术是指在一定范围以内的网络,因此超出范围的设备无法接入到局域网当中,虚拟局域网中的设备则与物理位置无关

wlan是指无线局域网技术,是指数据传播的过程以电磁波的形式完成,无需进行有线传播,我们熟知的wifi就是wlan下的一个概念。

两个概念完全是应用于不同的方向上的

连接在网络上的设备称为主机(host)

在初步建立计算机网络的时候,网络结构采用的是分级结构,即由主干网——地区网的方式,现在我们熟知的是由ISP(internet serverice provider),也就是电信等等提供的网络服务,你交钱获得一个接入网络的ip地址的使用权来上网。

RFC文档是由互联网官方制定的协议文档

计算机网络技术实际上解决的是实际上是计算机通信问题。而计算机通信的实质就是各个进程之间的通信。因而研究对象在于各个主机上面,我们又称主机为端系统,或者叫资源子网,主机之间的网络部分统称为通信子网。

端系统的通信方式主要有C/S(客户端和服务器端)以及P2P(点到点,也就是不会严格的区分客户和服务器)

其实P2P的模式也离不开C/S的概念,只不过在P2P当中客户端又可以作为服务器进行回复应答。而单纯的C/S服务器端只会被动的应答,且一直保持运行状态,需要拥有处理多个客户请求的能力,(服务器不需要知道客户ip),客户端需要向服务器端主动的进行请求(客户端需要知道服务器的ip)。

C/S的通信模式并不少见,在之中产生的一些概念也很常见。这里列举几个我遇到的概念:

  1. 高并发
  2. 多线程
  3. 服务器集群
  4. 分布式

2. 路由器

路由器是连接不同网络的核心部件,其转发信息的方式是分组交换形式
即将发送过来的数据划分成更小的数据段,加上首部成为分组分组内的首部包含了传递所需要的信息,比如ip地址等等
每个分组都会独立的选择路径进行传递(这样可以避免某一条链路的持续占用,提高线路的利用率),在发送某一数据段之前,路由器需要选择一条转发路径进行转发,这段选择的时间就产生了数据发送的时延,这段时间内,数据段存储在路由器内,这一过程又称为存储转发

在这里插入图片描述
上图描述了三种不同的交换,电路交换不同于分组交换,建立起了一条实际的连接线路,在数据全部转发完成之前,这条线路无法被其他数据使用,报文交换则没有数据分组这一过程,但是其具有存储转发这一特点,即数据选择不同的路径进行传播,没有建立起固定的连接。

3.网卡(网络适配器)

路由器是网络传输的核心器件,而我们常说的网卡-网络接口卡NIC(网络适配器)则是应用于网络接口层(物理层面上的)器件,主要作用包括实现以太网协议,缓存数据以及串并行的转换以及安装驱动程序等等

4.网络的参数

  1. 网络的速率:单位 bits/s 每秒传递数据的位数
  2. 网络的带宽:单位同上

这两个单位的区别在于,速率类似额定功率,并不是实际值。更像是指平均的水平,而带宽则是类比最大功率。

  1. 吞吐量:指一个接口或者是信道单位时间内允许通过的数据量大小

所以网络情况不仅仅取决于带宽或者标称的速率,也跟吞吐量有关系,你电脑的网络接口允许的吞吐量不高,尽管网络速率或者是带宽高,网络情况依旧不会好

还有一些概念不再详述
时延,时延带宽积,利用率(信道利用率、网络利用率)

5.计算机网络体系以及协议(TCP/IP)

在以前,计算机网络曾采用一个叫osi的协议,后来逐渐采用了现今的TCP/IP协议族

之所以叫协议族,就是因为其内部包含的协议众多

TCP/IP协议将我们的网络分成了四个层次:应用层,传输层,网络层以及网络接口层,其中网络接口层又分为数据链路层和物理层

协议的一个巧妙之处在于,下层统一为上层服务,每一层都只需要解决该层的主要问题,然后将数据传递给更上一层,无需关心上层或者下层的问题

举个例子:比如主机A上的进程q想要向主机B的进程q进行通信,主机A进程q作为应用层,将数据传递给传输层,进行数据处理,传给网络层,再包装,传给下一层…以此类推,传给物理层之后,经过实际的链路传给了主机B的物理层,物理层进行数据处理之后(实际上就是进行主机A的物理层的逆向工作)传给上一层,逐层处理上传,直到传给应用层的进程q,通信结束

计算机网络层(IP)

数据链路层将网络层的数据加上帧头帧尾变成MAC帧传给物理层,物理层将数据处理为比特流进行传播,另一头则接受比特流数据,教给数据链路层,去掉帧头帧尾再向上传递数据

这两层内部原理不在此详述,这两层主要解决了位于同一个网络的数据传播(可以根据MAC地址(48位2进制)寻址),位于不同网络的主机无法通信,且无法保证信息的可靠传输。

网络层同样不负责解决可靠传输的问题,只是尽全力进行交付,这个问题将交给运输层。

网络层提供的是数据报服务,也就是不需要建立稳定的连接,每个数据可以任意选择不同的路径进行发送(区别于虚电路服务:建立起一条稳定的连接线路,类似电路交换)

应用于网络层的主要协议就是IP协议,我们常说的IP地址就是诞生于这个协议,IP协议就是为了解决异构网络之间的通信问题。
在这里插入图片描述
异构网络的连接设备就是路由器,因此路由器是网络层的设备,其应该具有网络接口层以及网络层两层。

连接设备有了,接下来就是连接的地址,IP协议规定了IP地址,32位二进制标识,有官方统一分配,全网络唯一。在我们平时的写法当中并不是直接采用32位2进制写(IPV4),而是采用点分十进制,每八位化成一个10进制,之间用.来分隔。

IP地址最初是分为五个类,用户只能使用其中三类,其余两类有特殊用途。IP地址由**网络号(net-id)主机号(host-id)**两部分构成,其中网络号标志着主机所处的网络,主机号表示该设备是该网络中的哪个设备,网络号+主机号的不同搭配表示着不同的类别(8+24,16+16,24+8)

注意,网络号或者主机号全1或者全0都有着特殊含义,主机号全0或者全1是不可分配的,因此分配主机数量总是2^n-2个(n位主机号)同理,网络号。

可以认为全0表示我不关心,全1表示我全部关心
在这里插入图片描述
IP地址实际上分给的是设备的接口,每连接到一个网络就会被分配一个IP地址,这就意味着路由器实际上是有两个IP地址

地址解析协议ARP
尽管IP地址表示了主机的位置,但是在连接的时候完成的是网络接口层,也就是说IP地址需要抓换到MAC地址,ARP协议就是二者的映射关系

在局域网内,主机当中都有一张ARP高速缓存表,这张表记录了IP地址和MAC地址以及TTL(存活时间),每次通信会在这张表种查找,如果没有找到对应的MAC地址,则会以广播的形式向局域网内的所有主机进行请求,发送的请求数据被称为ARP请求分组,如果局域网内有对应地址的主机,则会向原主机发送ARP响应分组,原主机将响应分组内的MAC地址写入ARP高速缓存表中,并且发送通信数据。

ARP解决了一个局域网内的IP和MAC映射问题
那如果要通信的地点并不在一个局域网内呢,那就需要询问路由器是否知道通信网络的地址,如果路由器知道,同样会发送ARP响应分组,之后过程大致相同(路由器内也有类似ARP高速缓存表的存在也就是路由表),因此路由器的ARP代理就是这个意思

IP数据报

应用层数据报在IP层加上IP的头部成为IP数据报传给下一层
以IPV4来说,IP头部的基本长度是20个字节(最小),头部中的信息包括IP的版本,首部长度,区分服务(分布式?集中服务?),总长度,以及片偏移以及片偏移的表示。这里记录一下后二者的意思。

由于数据发送采用分组发送,因此,数据报中的数据每次都只是一段,数据从头到尾以此标号,标号除以8得到数字为该位的片偏移号码(片偏移以8个字节为1个单位)。

片偏移标识只有三位,其中MF(more fragment)以及DF(don’t fragment)表明该数据报是否有分片。

两者结合使用

特定主机路由

使用者规定了一条特定的通信路径,数据报在发送的时候不能自由选择路径

子网

加强对一个网络内的管理,而将一个网络内的主机又划分成了几个子网,并且分配了不同的子网号,子网号从主机号内部分出了几个位,原IP地址也从二级结构变成了三级结构(网络号-子网号-主机号)

由于子网号的位数未知,因此产生了子网掩码来确定子网号,子网掩码位数对应为32位。每一位对应IP地址上的一位,若IP地址对应位上表示的不是主机号,子网掩码的该位置为1,其他位置0。

我们常说的网络地址其实就是IP和子网掩码进行与运算,注意给出一个IP地址一定要跟上一个子网掩码(默认子网掩码:子网位为0位)

CIDR — 无分类的两级编址
网络前缀 + 主机号(共32位)采用斜线记法表明网络前缀多少位
在这里插入图片描述
网络层的其他协议

IP层除了IP协议还有几个辅助协议,例如ARP地址解析协议,还有一个ICMP协议,用在数据传输出问题的时候(连通性之类的问题)。
ICMP全称:网际控制报文协议,经典应用就是ping,以及tracert(追踪IP地址,不过现在很多都不直接显示IP地址了)

网络层的其他概念

虚拟专用网VPN:打包数据包后进行伪装,通过隧道技术在互联网上建立通信,属于远程访问技术

网络地址转换NAT:是一种在IP数据包通过路由器或防火墙时重写来源IP地址或目的IP地址的技术。这种技术被普遍使用在有多台主机但只通过一个公有IP地址访问因特网的私有网络中。

6.传输层 – TCP/UDP

传输层主要解决了传输可靠的问题,核心问题是进程之间的逻辑通信。

传输层的特点是复用和分用,复用:多个进程都可接入传输层,分用则是指在传输层到应用层的时候多个数据报会分别与不同的进程进行通信。

TCP协议:传输控制协议,面向连接的协议,是安全可靠的,双工连接(双方都可传递消息),缺点是建立一个全连接比较耗费资源,而且会比较慢(需要检验数据正确),在进行数据通信的时候,会将数据分段发送(发送缓存和接受缓存用于接受分段的数据,并且在发送完毕之后进行检验)。只能一对一。

UDP协议:用户数据报协议,面向无连接的协议,不保证数据的完全安全无误,但是耗费资源少,而且速度很快。一次性交付所有数据。用户自己要注意避免传递数据报过长或者过短,二者都会影响传递效率。允许一对一,一对多,多对一,多对多。

传输层提供服务给应用层,进程的通信数据会会通过指定的端口传入传输层,端口也是传输层交付应用层数据的工具。因为进程在计算机中是用不同的进程标识符所记录的,但是由于操作系统的不同,进程标识符也不完全相同,因而用端口号。

<IP地址:端口号> 称为套接字(socket)或者插口,这个端口号就是TCP协议通信连接的端口号。

TCP协议的几个概念

TCP协议采用C/S模通信模式

  1. 停止等待协议:客户端每次发送完数据之后总是要等待服务器端确认,同理得到服务器。
  2. 超时重传:在客户端和服务器端都有一个超时计时器,若传消息之后没有在固定时间内收到另一方的确认消息,则重传消息。
  3. TCP采用流水线传输,不停的发送数据段,不停的等待确认消息
  4. 自动重传请求ARQ
  5. 拥塞控制
  6. 死锁

TCP建立连接的三次握手过程

  1. 由A发出建立连接的请求(请求报文)
  2. B收到请求报文,向A发送响应报文,同时B也向A发起连接请求
  3. A再次发送针对B响应报文的响应报文,表明连接已成立(已经收到服务器的回应)

TCP断开连接的四次握手过程

  1. 由A发起断开连接(连接释放)的请求(A没有数据向B发送了)
  2. B收到请求之后,发出响应,此时B将接受缓存中的数据传入应用层,若B有数据向A发送,则此时B向A传入数据
  3. B没有数据需要通信之后,B向A发起一个释放连接的请求
  4. A收到B的释放请求之后发送确认报文,连接断开

7.应用层–解决某一类问题

应用层为了解决多种多样的问题,在TCP/IP的通信协议的基础上制定了相应的、多种多样的协议(http,https等等)

首先针对IP地址通信不好记忆的问题,制定了域名系统DNS
我们平时上网从不输入IP地址进行网络通信,我们只用网址进行通信就可以了,这里就用到了域名解析服务

一个网址也就是域名,主要构成是

····.三级域名.二级域名.顶级域名

我们常用的.cn就是标志属于中国网络的顶级域名,.com表明该网站属于某企业公司的顶级域名

我们输入域名之后,根域名服务器会首先进行顶级域名的搜索,之后将顶级域名对应的下属域名服务器的IP给出,进而转到下属一级的域名服务器,再进行搜索…直到转到所属位置

根域名服务器全世界有几十套设备存在,亚洲的唯一一套在日本

其次还有几个协议内容,这里不再详述,分别有FTP协议(文本传送协议),TFTP协议(简单文本传送协议),Telnet协议(远程控制协议基于TCP协议,对远程传送的数据不加密,抓包就可以得到数据,因此现在一般远程操作用ssh)

万维网

著名的万维网也就是www,我的理解其实只是计算机网络,互联网的一种服务而已,简单的来说就是用户可以用浏览器(客户端)通过链接访问不在本地的信息,每点击一个链接就可以访问某个网站(服务器端)的一个信息,这就是万维网服务。

万维网的信息都采用分布式,即链接对应的信息分布在各个主机上,为了标识信息的来源和对应的信息,万维网使用了URL(统一资源标识符),格式如下(其中端口路径可以省略)

<协议名称><主机><端口号><路径>

协议名称表明了访问该URL能够得到的信息形式,最常用的就是http(超文本传送协议,基于TCP,长连接1.1版本),表明访问得到的是网页信息,https其实就是http+ssl/tls(加密服务)使得网页信息更加的安全。

http表示了网络传递的信息以网页形式出现,而用来写网页的语言叫html(或者可以用xml、css,html适合写静态的网页,而xml适合写动态,css则适合构建网页的结构等),我们常说的cookie则是网页用来追踪用户在该网页上的操作的

DHCP动态IP分配

这个内容展示了我们一个局域网内的网络情况,由于局域网内的IP分配不固定(可能随时有新的设备接入或者移除),因此采用动态分配的策略,每当一个新设备进入网络后,他会主动向路由器发起申请,请求一个IP地址,局域网会动态的分配一个IP地址给这个设备,而且设定时间,每当时间到的时候,设备都需要重新发起申请,以获得新的IP地址,设备移除网络,IP回收,这就是内网穿透时IP地址不固定的来源。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值