网络发展背景、TCP/IP五层模型、网络传输基本流程、ip地址与端口概念

阿里云国内75折 回扣 微信号:monov8
阿里云国际,腾讯云国际,低至75折。AWS 93折 免费开户实名账号 代冲值 优惠多多 微信号:monov8 飞机:@monov6

在这里插入图片描述

📌————本章重点————📌
🔗了解网络发展背景, 对局域网/广域网的概念有基本认识;
🔗了解网络协议的意义, 重点理解TCP/IP五层结构模型;
🔗学习网络传输的基本流程, 理解封装和分用;
✨————————————✨

计算机网络背景

网络发展

 众所周知计算机最早设计出来是进行单机计算计算弹道导弹那网络的发展流程是咋样的呢请往下看
首先我们先弄清楚以下几个名词

中继器数据传输时候信号会减弱会把信号放大有俩=端口一个进一个出
集线器数据传入集线器集线器把数据广播出去大家都听见数据太杂效率低通俗的讲就是多端口的中继器
交换机端口更多进行跨网络不同网络直接进行数据交换
路由器数据单独发给某个用户涉及路径的选择
网络通俗来说就是大量路由器互相连接起来的星型连接结构就是每个路由器像星星一样连接起来
网卡实现数字信号和电信号的转化

独立模式: 计算机之间相互独立

在这里插入图片描述

网络互联: ( 多台计算机连接在一起, 完成数据共享)

每个用户都不能离服务器太远

局域网LAN: (计算机数量更多了, 通过交换机和路由器连接在一起,覆盖范围是在1000m以内的网络比如学校里的网络);

在这里插入图片描述

广域网WAN: 将远隔千里的计算机都连在一起;

在这里插入图片描述
 所谓 “局域网” 和 “广域网” 只是一个相对的概念. 比如, 我们有 “天朝特色” 的广域网, 也可以看做一个比较大的局域

注意

城域网是覆盖范围在20km之内的
组网方式以太网令牌环网…不是我们所说的网络划分
日常所说的互联网因特网说的是同一个网络其实就是一个国际化的广域网。

ip地址、端口、协议

ip地址

ip地址简介

 这时候就有小伙伴有疑问了我要想发一篇文章给我女朋友怎么才能保证发给的是我女朋友而不是上铺小黑呢这就引出一个新概念ip地址原来我发了消息之后路由器会根据ip地址找到对应的交换机交换机再将数据发送给具体的用户。
**ip地址**网络中每一台主机的唯一标识并且网络传输数据中必然会有俩个要素源端ip地址目的端ip地址这俩个信息标识了期待你和终点数据从哪里来到哪里去。

  1. 网络中的路由器,就会辨别这个目标主机IP地址属于哪个网络然后规划路径将数据发送到对应网络
  2. 目标地址:明确目标网络进行网络中的路径规划
  3. 源端地址:让对方知道数据来源与哪里以便于进行回复
    本质
    ipv4: uint32_ t 类型的数据----无符号32位的整形数字
     uint32_ t类型,最大的数字2^32-1,大概就是42亿9千多万也就是说IP地址在实际使用中其实是不够用的。
    ipv6: uint8_ t ip[16] —128位的数据 2^32 * 2^32 2^32 * 2^3216个字节相当于16*8个bit128位相当于42亿的四次几乎永远用不完
     但是ipv6并不向前兼容ipv4,也就是如果直接使用ipv6标准通信,以前基于ipv4的设备,程序就都用不了了,因此推广很慢很慢而当前主要的网络通信还是基于ipv4的通信

基于此目前共有俩种解决方法

  1. DHCP技术–动态地址分配技术(谁上网给谁分配地址)
  2. NAT技术:网络地址转换技术—主要应用于私网的组建(私网中的大量主机可以使用同一个公网地址进行上网)

理解源IP地址和目的IP地址

& emsp;在IP数据包头部中, 有两个IP地址, 分别叫做源IP地址, 和目的IP地址.思考: 我们光有IP地址就可以完成通信了嘛? 想象一下发qq消息的例子, 有了IP地址能够把消息发送到对方的机器上,但是还需要有一个其他的标识来区分出, 这个数据要给哪个程序进行解析.(比如小明给小红发的消息是QQ消息凭什么这个QQ消息就- -定是QQ这个程序处理的而不是主机上的xshell处理的因此网络中传输的数据还必须在一条主机 上标识应该由哪个进程来处理

端口

认识端口号

 端口在一个主机上用于标识唯一一个网络通信进程的
**本质**无符号16位整数——uint16 _t

端口号(port)是传输层协议的内容.

  1. 端口号是一个2字节16位的整数;
  2. 端口号用来标识一个进程, 告诉操作系统, 当前的这个数据要交给哪一个进程来处理;
  3. IP地址 + 端口号能够标识网络上的某一台主机的某一个进程;
  4. 一个端口号只能被一个进程占用.

 因此在网络传输数据中不但要有源端ip对端ip还要有俩个信息源端端口对端端口这俩个信息描述了是指定俩个主机上的哪俩个进程之间的通信理解网络通信也是一种进程间通信一个端口智能属于一个通信进程但是一个网络通信程序可以有多个端口。

理解 “端口号” 和 “进程ID”

 我们之前在学习系统编程的时候, 学习了 pid 表示唯一一个进程; 此处我们的端口号也是唯一表示一个进程. 那么这
两者之间是怎样的关系?

因为进程id当程序重启的时候会发生改变而端口不会改变。另外, 一个进程可以绑定多个端口号; 但是一个端口号不能被多个进程绑定;

 因此对端B的IP和端口就必须固定不固定A端不知道对方的地址和端口无法通信。如果B端主机上的QQ所使用的固定端口万一被其他程序占用了, QQ用不了就必须换个端口才行,但是换个端口对方找不到了。因此实际上我们大多数的网络应用通信(qq,微信), 并不是两台客户端主机之间的直接通信而是有一个网络服务提供商搭建了服务器这个服务器使用固定的地址和端口不会改变每个用户用的都是客户端实质上的通信时客户端与服务器的通信A主机QQ与QQ服务器通信告诉QQ服务器我的这条数据要发送给哪个QQ号对应QQ号的主机上线后会登录QQ服务器QQ服务器就知道了它的地址和端口然后将数据转发过去历史消息就是保存到了服务器中。
在这里插入图片描述
 实际的网络通信中必然有一 端主机的地址和端口是固定的,是让所有人都知道的。这一端通常叫做服务端(为用户提供服务的一端。我们使用的客户端程序都封装了自己的服务器主机地址和端口在里边。

协议

认识 “协议”

“协议” 是一种约定.是网络通信中的数据格式约定不同主机必须遵守相同的网络通信协议不是一个单个的协议而是一组协议才可以实现实质通信。

 计算机生产厂商有很多;计算机操作系统, 也有很多;计算机网络硬件设备, 还是有很多;如何让这些不同厂商之间生产的计算机能够相互顺畅的通信? 就需要有人站出来, 约定一个共同的标准,大家都来遵守, 这就是 网络协议;

举个有趣的例子
 小明给小红发送了一 条:我想你了,对应的二进制011111001111xxx转换为电信号的高低电平进行传输,但是如果小明和小红的主机上的网卡是不同厂商生产的他们对于高低电平的波长解释不同就会导致010101111,实际对方收到的是1010111111可能就被翻译成为:吃了吗小红回复了:还没呢小明收到了:收到的数据被解释成为滚蛋这时候的小明和小红并没有形成实质上的通信。

协议分层

 协议分层:按照网络通信环境不同层次所提供的服务,使用的协议提供的接口对整个通信环境进行了分层。

在这里插入图片描述
在这个例子中, 我们的协议只有两层; 但是实际的网络通信会更加复杂, 需要分更多的层次.分层最大的好处在于 “封装” .

OSI七层模型

OSIOpen System Interconnection开放系统互连七层网络模型称为开放式系统互联参考模型是一个逻辑上的定义和规范;把网络从逻辑上分为了7层. 每一层都有相关、相对应的物理设备比如路由器交换机;OSI 七层模型是一种框架性的设计方法其最主要的功能使就是帮助不同类型的主机实现数据传输;它的最大优点是将服务、接口和协议这三个概念明确地区分开来概念清楚理论也比较完整. 通过七个层次化的结构模型使不同的系统不同的网络之间实现可靠的通讯;但是, 它既复杂又不实用; 所以我们按照TCP/IP五层模型来讲解.
重点

  1. 应用层:负责应用程序之间的数据沟通的格式约定(QQ与QQ的沟通协议SSH) ;典型协议: HTTPSSH SMTP, FTP, …
  2. 传输层:负责进程之间的数据传输的格式约定; 典型协议: TCP/UDP (内部就描述 了源端端口,对端端口)
  3. 网络层:负责地址管理与路由选择;典型协议: IP协议(内部描述 了源端IP对端IP) ;典型设备: 路由器
  4. 链路层:负责相邻设备之间的数据传输就像搬运一样快递员一交给快递员二…最终交给用户;典型协议: ETH协议–以太网协议(内部描述了相邻设别的MAC地址) ;典型设备: 交换机
  5. 物理层:负责物理光电信号的传输;典型协议: 以太网协议(与组网技术有关) ; ;典型设备: 集线器

举一个qq传输的例子
在这里插入图片描述
注意
 分层顺序是固定的但是不一定每一层使用的协议相同,从传输层开始往下都是定义好的只能选择用哪一种不能自定义但是应用层的协议是程序员可以自定义的往下都是特定约定的,是一种标准。

拓展
在这里插入图片描述
在这里插入图片描述

TCP/IP五层(或四层)模型

 TCP/IP是一组协议的代名词它还包括许多协议组成了TCP/IP协议簇. TCP/IP通讯协议采用了5层的层级结构每一层都呼叫它的下一层所提供的网络来完成自己的需求.

  1. 物理层: 负责光/电信号的传递方式. 比如现在以太网通用的网线(双绞 线)、早期以太网采用的的同轴电缆(现在主要用于有线电视)、光纤, 现在的wifi无线网使用电磁波等都属于物理层的概念。物理层的能力决定了最大传输速率、传输距离、抗干扰性等. 集线器(Hub)工作在物理层.
  2. 数据链路层: 负责设备之间的数据帧的传送和识别. 例如网卡设备的驱动、帧同步(就是说从网线上检测到什么信号算作新帧的开始)、冲突检测(如果检测到冲突就自动重发)、数据差错校验等工作. 有以太网、令牌环网, 无线LAN等标准. 交换机(Switch)工作在数据链路层.
  3. 网络层: 负责地址管理和路由选择. 例如在IP协议中, 通过IP地址来标识一台主机, 并通过路由表的方式规划出两台主机之间的数据传输的线路(路由). 路由器(Router)工作在网路层.传输层: 负责两台主机之间的数据传输. 如传输控制协议 (TCP), 能够确保数据可靠的从源主机发送到目标主机.
  4. 应用层: 负责应用程序间沟通如简单电子邮件传输SMTP、文件传输协议FTP、网络远程访问协议Telnet等. 我们的网络编程主要就是针对应用层.
    在这里插入图片描述

物理层我们考虑的比较少. 因此很多时候也可以称为 TCP/IP四层模型.一般而言:

对于一台主机,它的操作系统内核实现了从传输层到物理层的内容;
对于一台路由器, 它实现了从网络层到物理层; 对于一台交换机,
它实现了从数据链路层到物理层; 对于集线器, 它只实现了物理层;

但是并不绝对. 很多交换机也实现了网络层的转发; 很多路由器也实现了部分传输层的内容(比如端口转发);

网络传输基本流程

网络传输流程图

同一个网段内的两台主机进行文件传输.

在这里插入图片描述

跨网段的主机的文件传输. 数据从一台计算机到另一台计算机传输过程中要经过一个或多个路由器.

在这里插入图片描述

数据包封装和分用

 不同的协议层对数据包有不同的称谓,在传输层叫做段(segment),在网络层叫做数据报 (datagram),在链路层叫做帧(frame).应用层数据通过协议栈发到网络上时,每层协议都要加上一个数据首部(header),称为封装(Encapsulation).首部信息中包含了一些类似于首部有多长, 载荷(payload)有多长, 上层协议是什么等信息.数据封装成帧后发到传输介质上,到达目的主机后每层协议再剥掉相应的首部, 根据首部中的 “上层协议字段” 将数据交给对应的上层协议处理.
在这里插入图片描述
下图为数据分用的过程
在这里插入图片描述

网络中的地址管理

认识IP地址

 IP协议有两个版本, IPv4和IPv6. 我们整个的课程, 凡是提到IP协议, 没有特殊说明的, 默认都是指IPv4

  IP地址是在IP协议中, 用来标识网络中不同主机的地址;对于IPv4来说, IP地址是一个4字节, 32位的整数;我们通常也使用"点分十进制" 的字符串表示IP地址, 例如 192.168.0.1 ; 用点分割的每一个数字表示一个字节, 范围是 0 - 255;

认识MAC地址

 mac地址就是物理硬件地址每个网卡都有一个物理硬件地址本质是一个6字节的无符号整数。
 网络层的ip地址描述了通信的起点和终点但是数据不是直接从起点到终点的而是经过大量的中间设备转发过去的中间相邻设备转发的时候就使用的是mac地址进行的表示。比如交换机就是通过mac地址进行转发的mac地址上有一个mac地址表交换机通过mac地址表知道这个主机链接的是哪个插口就把数据发送过去。
 MAC地址用来识别数据链路层中相连的节点;长度为48位, 及6个字节. 一般用16进制数字加上冒号的形式来表示(例如: 08:00:27:03:fb:19)在网卡出厂时就确定了, 不能修改. mac地址通常是唯一的(虚拟机中的mac地址不是真实的mac地址, 可能会冲突; 也有些网卡支持用户配置mac地址).

在这里插入图片描述

阿里云国内75折 回扣 微信号:monov8
阿里云国际,腾讯云国际,低至75折。AWS 93折 免费开户实名账号 代冲值 优惠多多 微信号:monov8 飞机:@monov6