文章目录

  • 1. 网络发展史
    • 1.1 单机时代
    • 1.2 网络互连
      • 局域网 LAN
      • 广域网 WAN
  • 2. 网络通信基础
    • 2.1 IP 地址
    • 2.2 端口号
    • 2.3 协议
    • 2.4 五元组
    • 2.5 协议分层
      • 2.5.1 OSI七层模型
      • 2.5.2 TCP/IP五层模型
    • 2.6 封装和分用
      • 2.6.1 数据封装(发送方情况)
      • 2.6.2 数据分用(接收方情况)
  • 总结

1. 网络发展史

1.1 单机时代

指最早计算机出现时, 计算机之间是相互独立的.

1.2 网络互连

随着时代的发展,越来越需要计算机之间互相通信,共享软件和数据,即以多个计算机协同工作来完成业务,就有了网络互连。

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

数据共享本质是网络数据传输,即计算机之间通过网络来传输数据,也称为网络通信。

于是,根据网络互连的规模不同,可以划分为局域网和广域网。

局域网 LAN

局域网,即 Local Area Network,简称LAN。Local 即标识了局域网是本地,局部组建的一种私有网络。

局域网内的主机之间能方便的进行网络通信,又称为内网;局域网和局域网之间在没有连接的情况下,是无法通信的。

局域网组建网络的方式有很多种:

1. 基于网线直连

2. 基于集线器组建

3. 基于交换机组建

4. 基于路由器和交换机组建

广域网 WAN

广域网,即 Wide Area Network,简称WAN。

通过路由器,将多个局域网连接起来,在物理上组成很大范围的网络,就形成了广域网。广域网内部的局域网都属于其子网。

这样城市和城市,国家和国家的网络之间都可以连接起来。

2. 网络通信基础

大致了解网络是什么, 它的发展史之后, 接下来我们就认识一些网络中的基本概念.

网络互连的目的是进行网络通信,也即是网络数据传输,更具体一点,是网络主机中的不同进程间,基于网络传输数据。

那么,在组建的网络中,如何判断到底是从哪台主机,将数据传输到那台主机呢?这就需要使用IP地址来标识。

2.1 IP 地址

IP 地址就是用来描述一个设备在网络中的虚拟位置, 每一个上网的设备在网络中都会有一个自己的 IP 地址.

概念

IP 地址主要用于标识网络主机、其他网络设备(如路由器)的网络地址。简单说,IP 地址用于定位主机的网络地址。就像我们发送快递一样,需要知道对方的收货地址,快递员才能将包裹送到目的地。

格式

IP 地址是一个32位的二进制数,通常被分割为4个 “8位二进制数”(也就是4个字节),如:01100100.00000100.00000101.00000110. 通常会用“点分十进制”的方式来表示,即 a.b.c.d 的形式(a,b,c,d都是0~255之间的十进制整数)如:100.4.5.6.

2.2 端口号

现在 IP 地址解决了网络通信时,如何定位网络主机的问题,但是还存在一个问题,传输到目的主机后,由哪个进程来接收这个数据呢?这就需要端口号来标识。

概念

在网络通信中,IP地址用于标识主机网络地址,端口号可以标识主机中发送数据、接收数据的进程。简单说:端口号用于定位主机中的进程。类似发送快递时,不光需要指定收货地址(IP地址),还需要指定收货人 (端口号) , 简单来说就是用来区分一台主机上的不同应用程序.

格式

端口号是0~65535范围的数字,在网络通信中,进程可以通过绑定一个端口号,来发送及接收网络数据。

注意事项
两个不同的进程,不能绑定同一个端口号,但一个进程可以绑定多个端口号。

常见端口号

21端口:FTP 文件传输服务
22端口:SSH协议、SCP(文件传输)、端口号重定向
23/tcp端口:TELNET 终端仿真服务
25端口:SMTP 简单邮件传输服务
53端口:DNS 域名解析服务
69/udp:TFTP
80/8080/3128/8081/9098端口:HTTP协议代理服务器
110/tcp端口:POP3(E-mail)
119端口:Network
123端口:NTP(网络时间协议)
135、137、138、139端口: 局域网相关默认端口,应关闭
161端口:SNMP(简单网络管理协议)
389端口:LDAP(轻量级目录访问协议)、ILS(定位服务)
443/tcp 443/udp:HTTPS服务器
465端口:SMTP(简单邮件传输协议)
873端口:rsync
1080端口:SOCKS代理协议服务器常用端口号、QQ
1158端口:ORACLE EMCTL
1433/tcp/udp端口:MS SQL*SERVER数据库server、MS SQL*SERVER数据库monitor
1521端口:Oracle 数据库
2100端口:Oracle XDB FTP服务
3389端口:WIN2003远程登录
3306端口:MYSQL数据库端口
5432端口:postgresql数据库端口
5601端口:kibana
6379端口:Redis数据库端口
8080端口:TCP服务端默认端口、JBOSS、TOMCAT、Oracle XDB(XML 数据库)
8081端口:Symantec AV/Filter for MSE
8888端口:Nginx服务器的端口
9000端口:php-fpm
9080端口:Webshpere应用程序
9090端口:webshpere管理工具
9200端口:Elasticsearch服务器端口
10050端口:zabbix_server 10050
10051端口:zabbix_agent
11211端口:memcache(高速缓存系统)
27017端口:mongoDB数据库默认端口
22122端口:fastdfs服务器默认端口

2.3 协议

现在有了IP地址和端口号,可以定位到网络中唯一的一个进程,但还存在一个问题,网络通信是基于二进制0/1数据来传输,如何告诉对方发送的数据是什么样的呢?

网络通信传输的数据类型可能有多种:图片,视频,文本等。同一个类型的数据,格式可能也不同,如发送一个文本字符串 "你好!" , 如何标识发送的数据是文本类型,及文本的编码格式呢?

所以, 基于网络数据传输时,还需要使用协议来规定双方的数据格式。

概念

协议,网络协议的简称,网络协议是网络通信(即网络数据传输)经过的所有网络设备都必须共同遵从的一组约定、规则。如怎么样建立连接、怎么样互相识别等。只有遵守这个约定,计算机之间才能相互通信交流。通常由三要素组成:

  1. 语法:即数据与控制信息的结构或格式;类似打电话时,双方要使用同样的语言:普通话
  2. 语义:即需要发出何种控制信息,完成何种动作以及做出何种响应;语义主要用来说明通信双方应当怎么做。用于协调与差错处理的控制信息。类似打电话时,说话的内容。
  3. 时序,即事件实现顺序的详细说明。时序定义了何时进行通信,先讲什么,后讲什么,讲话的速度等。比如是采用同步传输还是异步传输。

协议(protocol)最终体现为在网络上传输的数据包的格式。

作用

为什么需要协议?就好比我们与别人互相约定好在哪里见面,什么时候见面,这就是一种提前的约定,也可以称之为协议。

计算机之间的传输媒介是光信号和电信号。通过 “频率” 和 “强弱” 来表示 0 和 1 这样的信息。要想传递各种不同的信息,就需要约定好双方的数据格式。

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

2.4 五元组

在 TCP/IP 协议中,通常用五元组来标识一个网络通信:

  1. 源IP:标识源主机
  2. 源端口号:标识源主机中该次通信发送数据的进程
  3. 目的IP:标识目的主机
  4. 目的端口号:标识目的主机中该次通信接收数据的进程
  5. 协议号:标识发送进程和接收进程双方约定的数据格式

五元组在网络通信中的作用,类似于发送快递:

2.5 协议分层

对于网络协议来说,往往分成几个层次进行定义。

分层的作用

为什么需要网络协议的分层?

分层最大的好处,类似于面向接口编程:定义好两层间的接口规范,让双方遵循这个规范来对接。

在代码中,类似于定义好一个接口,一方为接口的实现类(提供方,提供服务),一方为接口的使用类(使用方,使用服务):

  • 对于使用方来说,并不关心提供方是如何实现的,只需要使用接口即可
  • 对于提供方来说,利用封装的特性,隐藏了实现的细节,只需要开放接口即可。

协议分层, 主要有两种模式.

  • OSI 七层模型
  • TCP/IP 五层模型

2.5.1 OSI七层模型

OSI 七层模型既复杂又不实用, 所以 OSI 七层模型并没有落地实现, 现在也只会在教科书上见到. 实际组建网络时, 只是以 OSI 七层模型设计中的部分分层, 也即是以下 TCP/IP 五层模型来实现.

2.5.2 TCP/IP五层模型

TCP/IP是一组协议的代名词,它还包括许多协议,组成了TCP/IP协议簇。

TCP/IP通讯协议采用了5层的层级结构,每一层都呼叫它的下一层所提供的网络来完成自己的需求。

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


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

2.6 封装和分用

封装和分用是网络传输数据时的基本流程, 每次网络传输都要进行这俩个过程.

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

2.6.1 数据封装(发送方情况)

我们就简单拿给好友发送一条qq消息为例, 当然真实的数据封装过程, 肯定还会比较复杂.

1. 应用层

QQ应用程序, 从输入框中获取到你要发送的消息, 构造成一个数据报(根据应用层的协议) , 通常很多应用程序中都会自定义应用层协议.

在这里, 我们假设 QQ 的应用层协议是这样的 发送人QQ号, 接收人QQ号, 时间, 消息内容, 所谓构造应用层数据报, 就是按照一定的格式进行字符串拼接, 发送方和接收方此格式需要达成一致.

当构造好数据报后, 应用程序就会调用传输层提供的接口, 将上述数据交给传输层进行处理.

2. 传输层

传输层协议有很多种, 其中最主要的就是 TCP 和 UDP 协议, 此处我们假设使用 UDP 协议.

上面我们将数据从应用层传到了传输层, 交给了 UDP, 于是 UDP 协议就会按照自己的协议格式, 生成一个 UDP 数据段.


UDP 不关心应用层数据里面内容是什么, 只会把应用层传来的数据当成字符串, 构造出一个 UDP 数据段来.

此时, 传输层会把构造好的 UDP 数据段, 进一步的交给网络层.

3. 网络层

网络层最主要的协议是 IP 协议. IP 协议也会根据自己的格式, 将传输层传来的数据段构造成一个 IP 数据报. 同样 IP 协议也不关心其中内容是什么, 只是单纯的把他当成一个字符串, 在这基础上再拼接一个 IP 报头.


然后, 网络层就会将数据报传给数据链路层.

4. 数据链路层

传到数据链路层后, 此时以太网, 会针对 IP 数据报, 进行进一步的封装, 添加一个帧头和一个帧尾, 构造出一个数据帧来. 同样, 以太网也不关心其中内容是什么.


上述这样的数据帧, 还需要进一步交给物理层.

5. 物理层

物理层指的就是我们的一些硬件设备, 比如网卡, 现在收到了数据链路层传来的数据帧. 本质上都是二进制的数据 (由 1010 构成的), 硬件设备就需要对上述数据进行转换了. 通过光电信号等等. 具体如何转换, 我们在此不仔细研究.

到这里, 我们就完成了发送过程.

一图总结

2.6.2 数据分用(接收方情况)

作为接收方, 我们是如何收到对方发送的 QQ 消息的呢?

1. 物理层

物理层收到光电信号, 就会对收到的信号进行解调, 就会得到一串 1010 的二进制数据序列, 也就是以太网数据帧.


解调后的数据帧就要被交给上一层, 数据链路层.

2. 数据链路层

数据链路层的以太网协议, 就会针对这个数据进行解析. 进行 “掐头去尾”.


此时将载荷部分取出来, 交给上层网络层.

3. 网络层

网络层的 IP 协议针对这个数据报进行解析, 去掉 IP 报头, 取出载荷, 进一步交给传输层.


根据网络层 IP 报头中的某个字段, 就可以知道当前这个载荷是一个 UDP 数据段, 于是便将其交给 UDP 处理.

4. 传输层

UDP 也是会针对数据段进行解析, 去掉段头, 取出载荷, 交给应用层的某个应用程序.


UDP 段头中, 有一个字段是用来记录目的端口的, 根据目的端口即可找到对应的应用程序.

5. 应用层

当 QQ 程序接收到这个数据后, 就会按照 QQ 的应用层协议, 进行解析.


进而将这里的数据显示到界面上, 这样接收方就收到了消息, 并且有时间信息, 内容信息等等.

一图总结


总结

✨ 本文主要讲解了计算机网络的一些基础知识, 网络的发展史, IP 地址, 端口号, 协议等等, 还重点讲述了网络传输时的封装和分用.
✨ 想了解更多计算机网络的知识, 可以收藏一下本人的计算机网络学习专栏, 里面会持续更新本人的学习记录, 跟随我一起不断学习.
✨ 感谢你们的耐心阅读, 博主本人也是一名学生, 也还有需要很多学习的东西. 写这篇文章是以本人所学内容为基础, 日后也会不断更新自己的学习记录, 我们一起努力进步, 变得优秀, 小小菜鸟, 也能有大大梦想, 关注我, 一起学习.

再次感谢你们的阅读, 你们的鼓励是我创作的最大动力!!!!!

【计算机网络原理】初始网络基础相关推荐

  1. 【计算机网络】6. 网络基础4之详解IP协议( IP协议头格式、IP地址管理、路由选择)

    目录 1. IP协议头格式 2. IP地址管理 2.1 IP地址的早期划分方式 2.1.1 A类 2.1.2 B类 2.1.3 C类 2.2 现在分配IP的方式:CIDR方式 2.2.1 引入子网掩码 ...

  2. 计算机网络原理知识点

    计算机网络原理知识点 网络发展阶段:面向终端的计算机网络:计算机-计算机网络:开放式标准化网络:因特网广泛应用和高速网络技术发展. 三大网络:电信网络:广播电视网络:计算机网络. 网络发展趋势:宽带网 ...

  3. 【计算机网络】网络基础必知必会

    网络基础必知必会 网络协议的体系结构 OSI 参考模型:应用层.表示层.会话层.传输层.网络层.数据链路层.物理层 五层协议的体系结构:应用层.传输层.网络层.数据链路层.物理层 TCP / IP 体 ...

  4. 「IT基础」计算机网络原理课程及其作用

    计算机网络原理课程及其作用 作者前言 由于网络的迅速发展,网络安全问题变成了大众重视的一部分,网络安全门槛较高这就导致现在渗透测试行业人员缺口较大.需求较高.如果想入门这一行业不具备基本的技术水平是不 ...

  5. 计算机网络——网络基础知识

    摘要 随着Internet技术的迅速发展,越来越多的计算机连入了Internet.很多公司也将自己公司的局域网接入了Internet.如何快速地访问Internet站点,提高网络的安全性,成为了当今的 ...

  6. Linux网络原理与编程——第十一节 网络基础及套接字

    目录 一.网络的层状划分结构 二.网络发展史 三.协议 四.OSI七层结构模型 五.TCP/IP四层(五层)协议结构模型 六.局域网中通信原理初识 封包.解包.分用.mac帧 七.跨网络通信原理初始 ...

  7. TCP/IP协议栈及网络基础,协议栈原理及实现

    1. TCP/IP协议栈及网络基础 推荐这个在B站几千观看的视频讲解: 底层原理到徒手实现 TCP/IP网络协议栈:tcp协议栈,如何实现? C/C++ Linux服务器开发高级架构学习视频点击:C/ ...

  8. 2017中石计算机网络基础试题答案,石大远程2017春计算机网络原理(含模拟实验)作业三...

    中石油北京2017春 <计算机网络原理(含模拟实验)>第三次在线作业 . l0 i9 t$ `! G$ e' z1 以下属于网络层协议的是$ X! X. |: C4 K$ _" ...

  9. Java网络编程(网络基础(IP端口号网络通信协议)、TCP编程、UDP编程和URL编程原理以及常用方法的实例)

    网络编程 网络基础概述 计算机网络:   把分布在不同地理区域的计算机与专门的外部设备用通信线路互连成一个规模大.功能强的网络系统,从而使众多的计算机可以方便地互相传递信息.共享硬件.软件.数据信息等 ...

  10. 原理 msc_计算机网络原理梳理丨无线与移动网络

    目录 无线网络 移动网络 IEEE802.11 蜂窝网络 移动IP网络 其它典型无线网络介绍 无线网络 无线网络的基本结构 无线主机 无线链路 基站 网络基础设施 自组织网络(Ad Hoc网络) 无线 ...

最新文章

  1. Java项目构建基础:统一结果,统一异常,统一日志(好文推荐)
  2. HDU 1847 Good Luck in CET-4 Everybody!(组合博弈)
  3. 王勇DRP项目浏览器无法正常显示问题
  4. BZOJ 2731 Luogu P3219 [HNOI2012]三角形覆盖问题 (扫描线)
  5. 关于autoupgader的狗屎问题
  6. 程序员是否可以作为终身从事的职业,以及程序员该何时考虑转岗
  7. rand函数怎么避免重复_Excel常用的计算统计函数
  8. leetcode 559 N叉树的最大深度
  9. Keras 构建DNN 对用户名检测判断是否为非法用户名(从数据预处理到模型在线预测)...
  10. vue ui没反应如何解决?
  11. rp文件,怎么用浏览器预览
  12. 哈希值是什么? 哈希概念
  13. 【解决】Yandex浏览器Bing搜索遭遇trovi.com劫持
  14. book mac pro怎么重装系统_苹果13英寸新MacBook Pro怎么重装win7系统
  15. 从零开始学习大数据系列之Linux-02Vim与Shell script
  16. Vue-Router学习记录
  17. 详解用Java实现爬虫:HttpClient和Jsoup的介绍及使用(请求方式、请求参数、连接池、解析获取元素)
  18. Azkaban配置Work Flow案例实操
  19. 自建团队app公司外包免编程app打包平台优缺点分析
  20. 企业应用大数据开源框架的意义何在?

热门文章

  1. 腾讯云云原生数据库“C位”出道
  2. 区别script中的type=”text/javascript”和language=”Javascript”
  3. 9 . adb device 报错could not read ok from ADB Server * failed to start daemon adb.exe: failed to check
  4. 游戏开发实战之《冰火世界》(四)
  5. python:基于flask有道智云API在线翻译网页
  6. CSS特效1 - 聚光灯效果
  7. 两个有趣的统计学问题
  8. 很多项目明明是大白马,为何Token却跌跌不休?
  9. 证监会对6宗内幕交易案件作出行政处罚 涉及现代制药等
  10. 已知半径和两圆相交面积求圆心距