热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

【网络协议突击指南01】前言和网络基础知识

恶补前的疑问作为技术人员,平时是会经常接触网络的,也常会听到一些诸如:TCP、UDP、IP、MAC之类的词(这些常用的肯定是知道大概意思的)我是非科班出身,没有系统学习过计算机网络

恶补前的疑问

作为技术人员,平时是会经常接触网络的,也常会听到一些诸如:TCP、UDP、IP、MAC之类的词(这些常用的肯定是知道大概意思的)

我是非科班出身,没有系统学习过计算机网络组成或者原理,在认识上很难对这些松散的知识有整体的一个认识。因此时常处于"知其然不知其所以然"的状态。

于是便将自己想的一些问题罗列出来作为恶补知识的目标,以上便是前言

下面列出关心的问题【可能会有一些想当然的问题,不过没关系,我会继续学】


0、网络的构成

网络是怎么构成的?为什么通过几个协议就可以定义网络?


1、什么是网络协议?

网络协议的定义?网络协议在网络的构建中的角色是什么?


2、网络协议分类和作用

网络协议分为哪些?分别对应于七层模型的哪些层?具体的作用是什么?


3、网络协议与网络流量的关系

不同网络协议对于网络流量的影响是只体现在比如数据段的构成不同上吗?还是干脆整个数据包的结构都有区别?

这些是我目前想知道的关于网络协议的问题,之后会回来解答

总的来说,恶补是基于《图解http 第五版》进行的,每个章节的内容会以总结和讨论的方式记录,其中也会有对于网上一些优秀解答的引用(我会标注),那么开始吧


第一章 网络基础知识


网络是如何出现的?

这与计算机的发展密不可分。总结为以下阶段

批处理时代---单机使用,设备昂贵;
分时系统时代---多个终端同时连一台计算机,一机可供多人使用;(计算机之间虽然也连接,但无法通信)
计算机间通信---计算机之间通过通信线路连接实现数据交换;
计算机网络---通过路由器等设施构建的计算机之间的通信网;
互联网---不同厂商的计算机之间建立的一个成本更低的网络环境;
IP(Internet Protocol)网---以协议为支撑的网络,取代过去由电话网支持的通信网络;

什么是协议?

先说在前,TCP/IP指的是一种网络体系结构(协议集合),其中包含着许多种类的协议

TCP/IP包含:

IP,ICMP,TCP,UDP,HTTP,TELNET,SNMP,SMTP...

因此,我之前会想:“是先学TCP/IP还是先学HTTP”这种想法就是多余的了,因为TCP/IP包含有HTTP。

回到正题,什么是协议


感性理解

《图解TCP/IP》中所举的例子就很形象

协议可以理解为我们使用的语言,不同的人说不同的语言,但只有说相同语言的人才能进行沟通。(可以理解为通信)

但这只是一个有助于理解的例子,实际情况还是有不同的。

人类在使用语言交流时,可以借助表情、语气等修正自己所要表达的语义。显然计算机没有达到这种智能程度。

因此,计算机中的协议必须是充分考虑通信过程中可能遇到的各种异常之后再制定的。因此遵循相同协议的计算机之间自然可以进行通信。


分组交换协议

分组交换指将大数据分割为一个一个的小块,称为包(Packet),分组交换就是将大数据分装在多个包中交给对方的过程

image-20221105170415493


协议的标准化

为了统一不同厂商间所使用的协议,简化通信成本

【严格定义:标准化是指不同厂商所生产的易购产品之间具有兼容性以及便于使用的规范化过程】

ISO指定了国际标准OSI(开放式通信系统互联参考模型)

很不幸,OSI作为一个标准,其中的很多协议至今都没有普及,但是作为OSI指导方针的OSI参考模型(七层模型),却常被用于制定网络协议

OSI协议和OSI参考模型不是一回事


协议分层

OSI参考模型将通信协议中的必要功能分成7层以简化一些复杂的网络协议。

每个分层都接受由它下一层提供的特定服务,并负责为自己的上一层提供特定服务。

上下层之间进行交互时所遵循的约定称为"接口";

同一层之间的交互所遵循的约定叫"协议";

image-20221105192933076

还是用之前"对话语言"的例子拓展一下

若A、B两人使用同种语言交流通过电话交流,表面上看他们是直接对话,但实际上A与B都只是通过电话机的听筒听取声音,都是对着麦克风说话。

在这个场景中,他们使用的语言协议作为麦克风的音频输入,在通信设备层被转换为电信号传出去。传到对方的电话机后,又被通信设备层转换为音频输出。A与B实际上是利用电话机之间的"音频转化声音"接口实现的对话

上述过程中,

双方使用的"电话机"的协议不同,会影响通话;

若双方同时更换"电话机"为"无线电",不会影响通信;(只需学会无线电方法即可)

若双方同时更换语言为"英语",不会影响通信;(电话机不会受"语言层"的影响)

感受一下协议分层的特点


OSI参考模型中各个分层的作用

============================================
7.应用层
针对特定应用的协议【例如电子邮件、文件传输等】
============================================
6.表示层
设备固有数据格式和网络标准数据格式的转换
【接收文字流、图像、声音等】
实际应用中用于保证异构机型之间的数据一致性
例如:从网易邮箱发往QQ邮箱的数据,在表示层中转换为各自软件的专属数据格式,而在表示层之下则使用统一的网络数据格式进行传输
============================================
5.会话层
通信管理。负责建立和断开通信连接,是数据流动的逻辑通路。管理传输层以下的分层【何时建立\断开连接,连多久】
还是用发邮件举例,该层决定邮件应该怎么发,在其收到的数据前端附加首部或标签信息,这些部分记录着数据传送顺序的信息
============================================
===========以下层负责具体数据的传输=============
4.传输层
管理两个节点(互联的网络终端设备)之间的数据传输,负责传输的可靠性,确保数据传送至目的地
【判断数据是否有丢失】
若传输过程中出现异常导致目的机器未收到数据,目的机器会再次询问发送方,发送方会将剩余部分重新发送并再次确认是否送达。
=================↑=协作=↓===================
3.网络层
地址管理和路由选择【选择经过哪个路由传递到目标地址】
实际将数据从A送到B
============================================
2.数据链路层
互联设备之间传送和识别数据帧【数据帧与比特流(如0101)之间的转换,数->比->数】

通过传输介质互联的设备,进行数据处理
============================================
1.物理层
以0、1代表高低电平和灯光的亮灭,界定连接器和网线的规格【比特流与电子信号(模拟信号)之间的切换,比->电->比】
直连设备之间采用地址实现传输,这种地址称为MAC地址,目的是为了识别连接到同一个传输介质上的设备。

补充知识:路由

https://zhuanlan.zhihu.com/p/149243461

路由是指路由器从一个接口上收到数据包,根据数据包的目的地址进行定向并转发到另一个接口的过程。

image-20221107100355842

问题:一台计算机在收发信息时会独占线路,其他计算机只能等待。


分组交换

image-20221107100445159

分组交换机(路由器,也叫3层交换机)负责连接通信线路

发送端计算机将数据分组发送给路由器,路由器接收到分组数据并缓存后发送给目标。顺序是先进先出

image-20221107100516414

问题:由于线路中传输速度的不同,可能出现拥堵、阻塞甚至分组数据丢失的情况



推荐阅读
  • OSI七层模型、TCP/IP五层模型
    OSI网络互连的七层框架:物理层、数据链路层、网络层、传输层、会话层、表示层、应用层;应用层OSI参考模型中最靠近用户的一层,是为计算机用户提供应用接口,为用户直接提供各种网 ... [详细]
  • c# java socketn 字节流_C#Socket编程详解(一)TCP与UDP简介
    一、TCP与UDP(转载)1、TCP1.1定义TCP(TransmissionControlProtocol)传输控制协议。是一种可靠的、面向连接的协议(eg:打电话)、传输效率低 ... [详细]
  • 2016年8月29日当初想的太简单~~~哎写在前面从3月份开始各大互联网类、游戏类、软件类等公司开始招暑期实习,9月份正式招聘,面临众多的工作选择和技术方向,我们不免有些眼花缭乱啊 ... [详细]
  • 我们身边的网络知识
    我们身边的网络常识今天咱们交流的主题是网络基础,这块东西对于咱们计算机或者通讯专业的人来说应该是很熟悉的,今天拿出来再说一说,是因为这块知识在咱们工作和生活中时刻都在使用,并且非常 ... [详细]
  • 本文介绍了在Python3中如何使用选择文件对话框的格式打开和保存图片的方法。通过使用tkinter库中的filedialog模块的asksaveasfilename和askopenfilename函数,可以方便地选择要打开或保存的图片文件,并进行相关操作。具体的代码示例和操作步骤也被提供。 ... [详细]
  • 本文介绍了数据库的存储结构及其重要性,强调了关系数据库范例中将逻辑存储与物理存储分开的必要性。通过逻辑结构和物理结构的分离,可以实现对物理存储的重新组织和数据库的迁移,而应用程序不会察觉到任何更改。文章还展示了Oracle数据库的逻辑结构和物理结构,并介绍了表空间的概念和作用。 ... [详细]
  • 本文分享了一个关于在C#中使用异步代码的问题,作者在控制台中运行时代码正常工作,但在Windows窗体中却无法正常工作。作者尝试搜索局域网上的主机,但在窗体中计数器没有减少。文章提供了相关的代码和解决思路。 ... [详细]
  • 达人评测 酷睿i5 12450h和锐龙r7 5800h选哪个好 i512450h和r75800h对比
    本文介绍了达人评测酷睿i5 12450h和锐龙r7 5800h选哪个好的相关知识,包括两者的基本配置和重要考虑点。希望对你在选择时提供一定的参考价值。 ... [详细]
  • 本文介绍了OkHttp3的基本使用和特性,包括支持HTTP/2、连接池、GZIP压缩、缓存等功能。同时还提到了OkHttp3的适用平台和源码阅读计划。文章还介绍了OkHttp3的请求/响应API的设计和使用方式,包括阻塞式的同步请求和带回调的异步请求。 ... [详细]
  • 本文介绍了H5游戏性能优化和调试技巧,包括从问题表象出发进行优化、排除外部问题导致的卡顿、帧率设定、减少drawcall的方法、UI优化和图集渲染等八个理念。对于游戏程序员来说,解决游戏性能问题是一个关键的任务,本文提供了一些有用的参考价值。摘要长度为183字。 ... [详细]
  • 三小时掌握计算机网络基础(通俗易懂)
    目录1.网络层次划分2.OSI七层网络模型3.IP地址4.子网掩码及网络划分5.ARPRARP协议6.路由选择协议7.TCPIP协议8.UDP协议 9.DNS协议 ... [详细]
  • CPAN(ComprehensivePerlArchiveNetwork)是internet上Perl模块最大的集散地,包含了现今公布的几 ... [详细]
  • 群发邮件_python自动群发邮件
    篇首语:本文由编程笔记#小编为大家整理,主要介绍了python---自动群发邮件相关的知识,希望对你有一定的参考价值。生活中我们经常发送邮件,那么我们能不能用Python ... [详细]
  • 局域网代理服务器如何搭建?哪些好处?
    代理服务器(ProxyServer)是指那些自己不能执行某种操作的计算机,通过一台服务器来执行该操作,该服务器即为代理服务器。是伴随着Internet应 ... [详细]
  • 企业之haproxy
    haproxy是一款功能强大、灵活好用反向代理软件,提供了高可用、负载均衡、后端服务器代理的功能,它在7层负载均衡方面的功能很强大(支持cookietrack,headerre ... [详细]
author-avatar
小梅LMY
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有