1. 网络互连
2. 局域网和广域网
3. IP地址和端口号
4. 网络协议
5. OSI七层模型
6. TCP/IP模型
7. 模拟实现网络通信


1. 网络互连

  几十年前, 在计算机刚刚兴起的时候, 计算机之间是相互独立的, 然而, 随着时代的发展, 越来越需要计算机之间的相互通信, 需要计算机之间进行共享数据, 传输数据, 也就是多个计算机协同完成业务, 于是, 网络互连由此产生.

  网络互连:多台计算机连接在一起, 实现数据的共享. 数据共享的本质其实就是网络中的数据传输, 即计算机通过网络来传输数据, 又叫做网络通信. 根据网络互连的规模大小, 我们将网络的互连划分为局域网广域网.

局域网和广域网

  局域网(local area Network), 又叫LAN, 局域网是在本地范围内局部组建的一种私有网络(例如一间办公室内的网络, 一个家庭里的网络)

  广域网(wide area Network), 又叫WAN, 通过路由器将多个局域网连接起来, 形成一个非常庞大的网络体系, 就构成了一个广域网, 广域网内部的局域网都属于其子网, 全球最大的广域网为 - “Internet”(因特网)

  局域网和广域网之间没有明显的划分, 也就是没有规定多少米范围内的网络属于广域网还是局域网, 要判断一个网络属于广域网还是局域网, 从宏观上判断即可, 范围小的网络即为局域网, 范围大的网络即为广域网.

IP地址和端口号

在进行网络互连时, 网络中的设备非常多, 像主机, 交换机, 路由器等设备都属于网络互连中的设备, 那么,如何将这么多的设备进行区分呢?

这就用到了IP地址, IP地址用于标识网络主机以及其他网络设备(如路由器)的网络地址, 简单来说, IP地址定位了网络中每台设备的位置.

IP地址的格式是一个4字节(也就是32个比特位)的二进制数, 通常情况下, IP地址都被分割为4个"8位2进制数", 每个数字之间用点号" . “连接, 而每个8位二进制数的范围为 0~255, 因此, 最大的IP地址为"255.255.255.255”.

IP地址解决了设备在网络中的地址问题, 然而, 一台主机中可能同时运行着多个进程, 数据传输到相应的主机之后, 要由哪个进程来进行接收呢?

在网络通信中, 端口号用于标识主机中发送和接收数据的进程, 也就是说, 数据通过IP地址发送给主机,然后通过端口号来定位到需要获取这些数据的进程.

端口号是一个范围为0~65535的数字, 在网络通信中, 进程可以通过绑定一个端口号来实现网络数据的接收和发送. 例如, MySQL服务器的默认端口号为3306.

注意:在网络通信中, 同一个进程可以有多个不同的端口号, 但是, 不同进程的端口号不可以相同.

引入网络协议

   有了IP地址和端口号之后, 就可以正确地定位到网络中特定主机上的进程, 那么, 进程和进程之间是如何实现数据传输的呢?例如, 我通过我的主机向其他人的主机发送了一条消息, 一个文档, 又发送了一张图片, 那网络是如何精准无误地将不同类型的数据传输到其他人的主机呢?

基于网络传输, 可以通过协议来规定双方的数据格式.

4. 网络协议

   网络协议是网络通信过程中所有网络设备都必须遵守的一组约定和规则, 如怎样建立设备间的连接, 怎样互相识别等. 只有所有的设备都遵从网络协议, 才能实现设备间的通信交流.

网络协议的三要素:

  1. 语法:数据与控制信息的结构或格式
  2. 语义:即需要发出何种控制信息, 完成何种动作以及做出何种响应
  3. 时序:规定了事件实现的先后顺序

为什么要使用网络协议呢?

  使用网络协议是为了消除网络中的差异. 例如, 如果没有物理层协议(网络协议中的一种), 不同的生产厂家生产出的计算机可能各不相同, 甚至是接口的大小和形状可能都会各有千秋.

  为了统一进行管理所有的网络设备, ISO提出了一个模型, 也就是OSI七层网络模型, 每层都有其对应的网络协议.

5. OSI七层模型

OSI:即Open System Interconnection, 开放系统互联

OSI七层模型的体系结构为:

  OSI模型将网络从逻辑上分为了七层(注意:分层仅限于逻辑层面, 而并非物理层面), 其最大的好处就是将服务, 接口和协议明确地区分开, 概念清楚, 理论完整, 通过七个层次化的结构模型使不同的系统, 不同的网络之间实现可靠的通讯.

  但是, OSI模型有着明显的缺点, 这个模型太过理想化, 庞大的体系结构使得它既复杂又不实用, 这样的缺点使得这个模型几乎只存在于理论中, 生活中实际应用的是另一种模型 - TCP/IP五层模型, 这也是我们需要重点学习的.

6. TCP/IP模型


可以看到, 五层模型将OSI七层模型中的上面三层(应用层, 表示层, 会话层)合并在了一起, 组成了新的应用层.

TCP/IP模型中每层的功能:

  1. 物理层:负责网络通信中的硬件设备, 所有针对硬件设备的约定都是物理层协议所负责的, 物理层协议需要保证所有的主机和网络设备之间是相互匹配的
  2. 数据链路层:负责相邻两个设备之间的通信(相邻设备就是通过网线连接起来的设备)
  3. 网络层:负责点到点之间的通信, 也就是在网络中的任意节点到任意节点之间, 由网络层协议负责在这两个节点之间规划出一条合适的路线
  4. 传输层:负责端到端之间的通信, 与网络层不同, 传输层只关注结果不关注过程, 也就是只需要关注起点和终点, 不需要关心数据是通过哪条网络路径到达的
  5. 应用层:和应用程序密切相关, 数据对于不同的应用程序有不同的用途

7. 模拟实现网络通信

发送方向接收方发送一条消息:

  1. 发送方的应用层协议开始生效, 发送消息的进程会根据该进程的应用层协议构造出一个应用层的协议报文(报文:遵从网络协议的数据)

    创建好应用层报文之后, 应用层协议就会调用操作系统的API(也就是socket), 将应用层的数据交给传输层处理

2.传输层将应用层传过来的协议进行封装, 也就是为协议加上传输层协议的报头.

传输层最典型的协议有TCP协议, UDP协议等, 以TCP协议为例:
TCP报头中存放了源端口和目的端口等信息, 封装好之后, 传输层会将报文传给网络层

  1. 网络层获取到传输层传来的报文之后, 会根据当前正在使用的网络层协议(例如IP协议)继续对报文进行封装, 再次为报文加上报头, 将TCP数据报构造成IP数据报(网络层的操作是在操作系统内核中进行的)

    IP数据报头中存放了源IP和目的IP等信息, 封装好之后, 网络层将报文传给数据链路层

  2. 报文传输到数据链路层之后, 数据链路层会根据当前的协议(数据链路层最常用的协议是以太网协议)构造出一个数据链路层的数据报, 例如以太网协议帧


以太网数据帧的帧头中存放的是下一个要到达的设备的地址(类似于中转站), 帧尾中存放的是校验和(后面会学到), 封装完成之后, 数据链路层会将以太网数据帧发送给物理层

  1. 物理层收到数据链路层发来的以太网数据帧(一组二进制数据)之后, 会将其中的1和0分别变为高点平和低电平, 然后通过光纤或无线的方式传送出去, 至此, 这些数据就脱离了发送方的主机, 经过若干个路由器或交换机的转发, 将数据送往接收方.

接收方收到消息:

  1. 接收方的物理层率先感知到一组高低电平, 然后将这组点平翻译为0和1的二进制编码(也就是一个完整的以太帧), 将这个以太帧发送到接收方的数据链路层

  2. 数据链路层接收到以太帧之后, 将以太帧的帧头和帧尾去掉, 取出其中的IP数据报, 将去掉帧头和帧尾的报文发送给网络层

  1. 网络层接收到报文之后, 将IP报头去掉, 取出里面的TCP数据报交给传输层

  2. 传输层又会对获取到的报文进行解析, 去掉TCP报头, 取出应用层报文并传给应用层

  3. 应用层调用socket API从内核中读取到报文, 并按照应用层协议对该报文进行解析, 并将结果显示出来.

  至此, 一次数据的发送过程就执行完了. 可以看出, 在这个执行过程中, 发送方的每一层都在对报文添加相应的信息, 这个过程叫做封装, 而接收方对报文中每一层信息的去除, 这一操作叫做分用.

对于上面的数据传输操作, 我们忽略了中间的转发过程, 实际上, 数据转发的过程是非常复杂的, 用于数据转发的路由器, 交换机等设备也都实现了TCP/IP模型, 只不过这些设备只实现了一部分, 例如:

  交换机实现了物理层和数据链路层, 交换机转发的大致操作为:先对报文进行分用(也就是拆分), 将报文解析到数据链路层, 更新以太网数据帧的帧头中的地址, 然后重新封装, 再进行转发.

  路由器实现了物理层, 数据链路层和网络层, 路由器进行转发的大致操作为:路由器对报文进行分用, 一直将报文解析到网络层, 拿到IP地址后进行下一阶段的路线规划, 然后向下封装, 并进行转发.


The end

计算机网络 - 初识网络相关推荐

  1. 精通Python网络爬虫:核心技术、框架与项目实战.1.1 初识网络爬虫

    摘要 网络爬虫也叫做网络机器人,可以代替人们自动地在互联网中进行数据信息的采集与整理.在大数据时代,信息的采集是一项重要的工作,如果单纯靠人力进行信息采集,不仅低效繁琐,搜集的成本也会提高.此时,我们 ...

  2. 计算机网络工程应用,计算机网络工程网络命令的应用

    计算机网络安全是计算机网络工程当中比较重要的环节,以下是小编搜集整理的一篇探究计算机网络工程发展现状的论文范文,供大家阅读参考. 摘要:处在当前的时代发展背景下,网络技术的发展已经进入到新的阶段,计算 ...

  3. 《Python爬虫开发与项目实战》——第3章 初识网络爬虫 3.1 网络爬虫概述

    本节书摘来自华章计算机<Python爬虫开发与项目实战>一书中的第3章,第3.1节,作者:范传辉著,更多章节内容可以访问云栖社区"华章计算机"公众号查看 第3章 初识网 ...

  4. 八股总结(二)计算机网络与网络编程

    layout: post title: 八股总结(二)计算机网络与网络编程 description: 八股总结(二)计算机网络与网络编程 tag: 八股总结 文章目录 计算机网络 网络模型 网络体系结 ...

  5. 计算机网络基础——网络的性能

    计算机网络基础--网络的性能 速率(数据率) 概念 单位时间传送的数据量. 单位: bit/s(比特每秒) 这里的比特就是衡量数据多少的一个单位,就像米是衡量距离的单位一样. 1 kbit/s = 1 ...

  6. 计算机性能指标ppt,计算机网络—评价网络的性能指标知识讲解.ppt

    <计算机网络-评价网络的性能指标知识讲解.ppt>由会员分享,提供在线免费全文阅读可下载,此文档格式为ppt,更多相关<计算机网络-评价网络的性能指标知识讲解.ppt>文档请在 ...

  7. 视频教程-计算机网络技术-网络技术

    计算机网络技术 10年以上IT教育培训与实战经验,省级IT优秀教师,国家认证网络工程师. 备受好评的培训课程有:思科CCNA.CCNP认证课程,华为HCDA.HCDP认证课程,微软MCSA.MCSE认 ...

  8. 计算机网络与协议分析,计算机网络-使用网络协议分析器捕捉和分析协议数据包...

    <计算机网络-使用网络协议分析器捕捉和分析协议数据包>由会员分享,可在线阅读,更多相关<计算机网络-使用网络协议分析器捕捉和分析协议数据包(10页珍藏版)>请在人人文库网上搜索 ...

  9. 【计算机网络】网络体系结构

    前言:本章作为<计算机网络>系列的开篇文章,内容主要是向大家介绍介绍网络体系结构,引入计算机网络的概念.组成.功能.分类.标准化.性能指标以及体系结构和OSI.TCP/IP参考模型等内容. ...

最新文章

  1. Nagios之事件处理
  2. Java原子操作类,你知道多少?
  3. mutation annovar
  4. CSP认证201503-4 网络延时[C++题解]:树的直径
  5. perl语言入门第七版中文_python和c语言哪个简单
  6. 集群的可扩展性及其分布式体系结构(1)
  7. 上海应用技术大学计算机专业分数线,上海应用技术大学2016年上海市各专业录取分数线...
  8. mybatis开发中遇到的小问题
  9. JVM中的monitor
  10. 二叉树面试题总结(Java)
  11. 时间轮定时器-Timewheel
  12. 安邦拆分的大家保险已具正常经营能力;新东方面向全球招聘3000余人 | 美通企业日报...
  13. Revit二次开发记录
  14. ClickHouse原理及使用
  15. 全桥驱动IR系列参考设计及问题指南
  16. 郭盛华技术有多牛?外媒:稳坐亚洲第一
  17. 使用labelimg标注图片
  18. 微信小程序开发之——用户登录-搭建开发者服务器(2)
  19. MATLAB 学习心得(3) 定积分和双重积分,三重积分的求法
  20. JAVA EE JSP collection

热门文章

  1. Nginx80端口转发+域名——实现IP+端口隐藏
  2. Linux那些事儿之我是U盘(49)跟着感觉走(一)
  3. Java代理模式汇编
  4. 数字中国,建设有我!锐捷网络亮相首届数字中国峰会
  5. 【分享】百度关键词排名提升软件 - 百度排名助手
  6. 【活动】各位用户上帝,新版本你说了算
  7. 转载的一些计算机面试的东西
  8. rust unresolved import
  9. java计算机毕业设计山西农谷企业产品推广展网源码+系统+数据库+lw文档+mybatis+运行部署
  10. C++字符串分割方法总结