快速了解网络原理

news2024/11/16 16:25:10

作者:~小明学编程 

文章专栏:JavaEE

格言:热爱编程的,终将被编程所厚爱。
在这里插入图片描述

目录

局域网和广域网

局域网

局域网组建的方式

广域网

网络通信基础

IP地址

端口号

协议

什么是协议

协议分层

分层模型

OSI七层模型

TCP/IP五层模型

网络设备所在的分层

封装和分层

封装

应用层

传输层(操作系统内核)

网络层(操作系统内核)

数据链路层(驱动程序)

 物理层(硬件设备,网卡)

分用

物理层

数据链路层

网络层

传输层

应用层

传输过程


局域网和广域网

局域网

局域网,即 Local Area Network,简称LAN。

局域网通俗的来说就是将一小片区域(没有明确的界限)的主机给连接起来,然后连接起来的主机之间就可以互相通信了,又称为内网;局域网和局域网之间在没有连接的情况下,是无法通信的。

局域网组建的方式

1.基于网线连接:通过网线将多台设备连接起来。

2.基于集线器的连接:将多台设备都连到集线器上面。

3.基于交换机组建:将多台设备连到交换机上。

4.基于交换机和路由器组建:将多台设备连接到交换机上再将多个交换机连在一个路由器上。

广域网

通过路由器,将多个局域网连接起来,在物理上组成很大范围的网络,就形成了广域网。广域网内部的局域网都属于其子网。所谓的广域网和局域网之间是没有明确的界限的,只是一个相对概念。

网络通信基础

刚刚简单的介绍了一下广域网和局域网,他们主要是通过某种设备将多台设备连接起来,连接起来的目的就是为了彼此相互交流,下面就简单的给大家介绍一下他们之家是如何实现相互交流的。

IP地址

所谓的IP地址是用于定位我们主机的网络地址。

其中IP地址是一个32位的一个二进制数,但是32位的二进制数不易读,所以我们通常把它分为四个八位的二进制数也就是4个一个字节的数,这样的过也就规定了每个字节的大小是0~255.

通常情况下通常用“点分十进制”的方式来表示,即 a.b.c.d 的形式(a,b,c,d都是0~255之间的十进制整数)。如:100.4.5.6

特殊的IP

127.*的IP地址用于本机环回(loop back)测试,通常是127.0.0.1
本机环回主要用于本机到本机的网络通信(系统内部为了性能,不会走网络的方式传输),对于开发网络通信的程序(即网络编程)而言,常见的开发方式都是本机到本机的网络通信。

这样的话我们就可以通过IP地址找到我们指定的主机了,但是光找到主机的话还是不够的我们需要找到哪一个进程来解决问题,这就需要我们的端口号了。

端口号

我们的IP地址用于锁定我们的主机的位置,而端口号用于锁定该主机的某一个进程,这样才能精确的知道我们的数据要放在哪里。

端口号的本质是2个字节的无符号整数所以其能够表示的范围就是从0~65535,值得我们注意的是一个端口号只能绑定一个进程,但是一个进程可以绑定多个端口号。

协议

什么是协议

所谓的协议就是一种约定我们的计算机之间的交流是比较复杂的,我们需要很多的约定才能使彼此之间能够很好的交流并且正确的交流。

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

协议分层

前面我们说了协议很复杂有多种多样的规定和约束才能保证我们通信的正常,所以这个时候需要我们对协议进行分层,各自管理各自的东西这样可以避免将所有的规定都写在一起所造成的复杂,协议的分层有利于我们对协议更好的维护和扩展。

优点

1.每层协议不需要理解其他层协议的细节(更好的做到了封装)。就像打电话的人,不需要理解电话的工作原理,就能完成打电话的操作。制造电话的人,也不需要成为语言大师。

2.把对应层的协议替换成其他协议(更好的耦合)。就像打电话的人,可以使用有线电话,也可以使用无线电话。打电话的人,可以使用汉语,也可以使用英语。

分层模型

OSI七层模型

OSI七层网络模型是将网络从逻辑上分为了七层,他们分别是

应用层

网络服务与最终用户的一个接口。

协议有:HTTP FTP TFTP SMTP SNMP DNS TELNET HTTPS POP3 DHCP

表示层

数据的表示、安全、压缩。(在五层模型里面已经合并到了应用层)

格式有,JPEG、ASCll、EBCDIC、加密格式等 

会话层

建立、管理、终止会话。(在五层模型里面已经合并到了应用层)

对应主机进程,指本地主机与远程主机正在进行的会话

传输层

定义传输数据的协议端口号,以及流控和差错校验。

协议有:TCP UDP,数据包一旦离开网卡即进入网络传输层

网络层

进行逻辑地址寻址,实现不同网络之间的路径选择。

协议有:ICMP IGMP IP(IPV4 IPV6)

数据链路层

建立逻辑连接、进行硬件地址寻址、差错校验  等功能。(由底层网络定义协议)

将比特组合成字节进而组合成帧,用MAC地址访问介质,错误发现但不能纠正。

物理层

建立、维护、断开物理连接。(由底层网络定义协议)

这种分层并不是很实用所以我们通常将上面的三层合并到一起也就是TCP/IP五层/四层(不算上物理层)模型。

TCP/IP五层模型

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

下面我们就分别详细的介绍这五层分别的功能是什么。

物理层:

网络通信中的硬件部分,主要是针对硬件的一些约束,就像我们的买u盘的时候一般不需要考虑插口的问题,拿来直接就能插进去使用了,这是因为我们事先对其进行了一些约定,多宽多长等都约定好了。

数据链路层:

数据链路层主要是负责相邻的两个设备之间的通信的,例如我们一个路由器连接了两个主机,主机以和主机2,那么我们的主机和路由器之间就是相邻的,而两个主机之间是不相邻的。

网络层:

网络层是负责点对点之间的通信的,在一个复杂的网络之中我们想要连接两台主机的话就需要网络层来规划出一条合适的路线。

传输层:

负责端到端之间的通信,只关注数据有没有传输到位不关注数据是怎么传输的。

应用层:

和应用程序相关主要负责告诉我们这个数据是干嘛用的,不同的应用程序就会有不同的用途。

网络设备所在的分层

主机:实现了物理层要应用层这五个层面,其中操作系统实现了传输层到物理层。

路由器:实现了从物理层到网络层这三个层面。

交换机:实现了物理层到数据链路层。

封装和分层

封装

描述了不同的分层的协议之间,是如何相互配合的。就是将应用层的内容,封装为传输层的内容。封装的时候就是将上面放上一些辅助的信息。封装的时候不需要考虑脏数据。

应用层

首先我们需要构造一个应用层的协议,就拿我们发微信来举例子,我们现在想要发一个"圣诞快乐",我们假设微信的协议是这样的。

这样就构造好了我们的应用层的协议报文。

传输层(操作系统内核)

然后接下来就到了我们的传输层,在传输层我们需要根据刚才应用层的协议报文来构造一个传输层的协议报文,其中传输层最典型的协议:UDP,TCP。

构造成的数据报,TCP 数据报 = TCP 报头 + 数据载荷(Payload,也就是一个完整的应用层数据。

 以上就是构造好了一个以TCP为例的传输层的协议报文。

网络层(操作系统内核)

拿到了完整的传输层数据报,就会在根据当前使用的网络层协议(例如 IP),再次进行封装,把 TCP 数据报构造成 IP 数据报,还是添加一个协议报头。仍然是字符串拼接的过程。紧接着,当前的 网络层协议,就会把这个 IP 数据报,交给数据链路层。

 IP 数据报 = IP 协议报头 + 载荷(完整的 TCP/UDP 的数据报)

IP 数据报当中也有很多重要的信息:其中最重要的就是 源IP 和 目的IP。相当于发件人的地址,和收件人的地址。

以上就构造好了我们网络层的协议报文,接着就交给我们的数据链路层了。

数据链路层(驱动程序)

在刚才的 IP 数据报基础上,根据当前使用的数据报链路层的协议,给构成一个,数据链路层的数据报。典型的数据链路层的协议,叫做 “以太网” ,就会构造成一个 “以太网数据帧”。

不同于上面,数据链路层会在IP数据包的基础上加上帧头和帧尾,网络层的的IP协议里面主要包含了起点和终点,我们的帧头是起点和下一个节点的地址,其中起点的地址是不变的而下一个节点的地址是变化的。

 物理层(硬件设备,网卡)

物理层的作用就是把刚才的以太网的数据帧(一组01)变成高低电平或者变成高低电磁波给传输出去。

分用

分用就是封装的逆过程,就是将层层的封装给拆开最后拿到我们想要的数据。

物理层

将我们得到的高低电平或者电磁波转换成01,然后这一串 0 1 就是一个完整的以太网数据,然后 物理层 就把数据交给 数据链路层。

数据链路层

在数据链路层会去掉这些帧头和帧尾,拿到IP数据报,再将ip数据报交给网络层。

网络层

在网络层我们会去掉我们的IP协议报头然后将里面的TCP协议报文交给传输层。

传输层

接着传输层又会对当前协议进行解析,去掉TCP协议报头将里面的东西交给应用层。

应用层

就会调用 socket API 从内核中读取到这个应用层的数据报,再按照应用层协议进行解析,然后根据解析结果显示到窗口中。

传输过程

通过交换机 

通过路由器

 我们复杂的传输过程基本都是通过这两种情况而来的,中间可能会经过多个路由器或者交换机。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/132450.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Python解题 - CSDN周赛第18期 - 又见背包

卧床一周,一觉醒来,恍如隔世,做什么事都提不起兴趣,也不知道这算不算后遗症。 本期的题目还是比较简单的,也有几道做过的题。最后一道照搬过来的背包题也是比较经典的01背包了,整体感觉没有什么值得说的&am…

linux常用命令(四)- 文件备份解压缩

查看压缩文件信息 - zipinfo zipinfo命令用于列出压缩文件信息。 语法 zipinfo [-12hsvz][压缩文件]-1 只列出文件名称。-2 此参数的效果和指定"-1"参数类似,但可搭配"-h",“-t"和”-z"参数使用。-h 只列出压缩文件的文件名称。-s…

c++11 标准模板(STL)(std::deque)(四)

定义于头文件 <deque> std::deque 元素访问 访问指定的元素&#xff0c;同时进行越界检查 std::deque<T,Allocator>::at reference at( size_type pos ); const_reference at( size_type pos ) const; 返回位于指定位置 pos 的元素的引用&#xff0c;有边…

如何在PVE(Proxmox)中安装OpenWrt软路由?

出处&#xff1a; https://www.928wang.cn/archives/1763.html https://blog.itwk.cc/post/pve_install_openwrt.html 工具准备 WinSCP或者XFTPOpenWrt镜像(自行寻找)安装好PVE的主机一台 安装教程 镜像上传 将下载好的OpenWrt img镜像上传到 PVE主机中(这里使用XFTP工具) 选…

MySQL中的DDL、DML、DCL、DQL

SQL分类 DDL(Data Definition Language)数据定义语言 用来定义数据库对象&#xff1a;数据库&#xff0c;表&#xff0c;列等。关键字&#xff1a;create, drop,alter 等 DML(Data Manipulation Language)数据操作语言 用来对数据库中表的数据进行增删改。关键字&#xff1a;i…

vue-element-表格 Excel 【导入】功能 (2023元旦快乐~~~)

一、页面表格导入功能 我们借鉴vue-element-admin文件来学习表格导入功能,如果你有vue-element-admin的完整文件&#xff0c;可以去这里找 or 用我这里的代码 1. 整体复制到你要用到的页面 <template><div class"app-container"><upload-excel-com…

unreal engine 纹理动态运动的实现

先用ps涉及一张图,发光的地方为白色 下图实际上边缘是相连的白色 split_line.jpgue新建材质 基础色vector3 随便选择一个偏灰的颜色 自发光 TextureCoordirate ->Panner->图片rgb->*发光常量 * 20自发光 预览效果 通过修改纹理协调器的V垂直平铺控制条纹数量 image.pn…

mybatis插件

Configuration组成 Mapper映射器 3个部分组成&#xff1a; MappedStatement 保存一个节点(select | insert | update | delete) &#xff0c;包括我们配置的sql&#xff0c;&#xff0c;sql的id&#xff0c;&#xff0c;缓存信息&#xff0c;&#xff0c;resultMap,parameterT…

Redis高并发锁(三)分布式锁

在很多情况下&#xff0c;你的数据库不支持事务&#xff0c;分布式部署也使得你无法去使用JVM锁&#xff0c;那么这种时候&#xff0c;你可以考虑用分布式锁 文章目录分布式锁1. 实现方式2. 特征3. 操作4. 代码改造5. 测试优化1. 递归改成循环2. 防止死锁3. 防误删4. LUA脚本 保…

Arduino code for RS-365PW 16120

Pictures These pictures are from Baidu Search. Picture 1: Installment Picture 2: Appearance Picture 3: Encoder of Motor Picture 4: Pins location and number Physical Specification Brand: Mabuchi Motor (万宝至电机)Type: RS-365PW 16120 Body length&#xff1…

学生抢课接口(高并发入门)

目录 使用Mysql 常规测试 张三测试 流程总结 redis优化 修改代码 测试 使用分布式锁 总结 使用Mysql 常规测试 原始代码: Override Transactional public ResponseResult selectCourse(SelectParmas selectParmas) {if (Objects.isNull(selectParmas)){return new …

【python游戏】新的一年快来变身兔兔战士打败獾守护兔兔吧~

前言 大家早好、午好、晚好吖 ❤ ~ 一只快乐兔&#xff0c; 来到快乐山&#xff0c;喝了快乐泉&#xff0c; 又到快乐殿&#xff0c;吃了快乐莲&#xff0c;遇到快乐仙&#xff0c; 听了快乐言&#xff1a;快乐很简单&#xff0c;快乐在身边&#xff0c;快乐无极限&#xff…

C++中STL的vector扩容机制

目录前言发生扩容扩容机制size()和capacity()reserve()和resize()前言 前阵子面试的时候&#xff0c;被问到往vector中插入一个数据可能会发生什么&#xff1f; 我答:可能会扩容; 为啥vector支持变长&#xff1f; 我答:它实在堆上动态申请内存&#xff0c;因此有自己的一套扩容…

Redis集群系列十 —— 集群伸缩之收缩

集群收缩原理 集群收缩就是让其中一些节点安全下线。 所谓的安全下线指的是让一个节点下线之前&#xff0c;把其负责的所有 slots 迁移到别的节点上&#xff0c;否则该节点下线后其负责的 slots 就没法继续提供服务了。 收缩流程如下&#xff1a; 需求 前面扩容完成后&…

字符串大小写转化,有序数组二分查找个人心得等若干内容

tips 1. 在电脑里面&#xff0c;任何一切字符&#xff0c;当一看到的时候&#xff0c;脑子里面就要把它转化成ACSII值。如while(0)&#xff0c;可以实现死循环。 2. 统计整形数组的长度不能用strlen()&#xff0c;别一天到晚用到底&#xff0c;strlen统计的是字符数组的长度 …

在wsl下开发T113的主线linux(1)-准备wsl开发环境

首先在win10或win11下安装wsl&#xff0c;选择wsl1或者wsl2都可以&#xff0c;wsl2的性能更高一些&#xff0c;wsl1的跨系统文件操作速度更快一些&#xff0c;我这里因为有一些工程在win文件系统下&#xff0c;所以选择了wsl1&#xff0c;发行版使用最新的Ubuntu 22.04.01 LTS。…

MySQL隐式转换

隐式转换概念 When an operator is used with operands of different types, type conversion occurs to make the operands compatible. Some conversions occur implicitly. 当运算符与不同类型的操作数一起使用时&#xff0c;将进行类型转换以使操作数兼容。某些转换是隐式发…

2022年年终总结---新方向,新期待

2022年行将结束&#xff0c;回首年初立下的flag&#xff1a; (1)完成OpenCoord版本升级&#xff0c;增加ITRF框架及历元转换、EGM2008查询功能&#xff1b; (2)完成多波束开源项目的数据读取和显示操作。 任务(1)已经完成了&#xff0c;任务&#xff08;2&#xff09;没有完成。…

力扣(LeetCode)2351. 第一个出现两次的字母(C++)

哈希集合 开哈希集合&#xff0c;遍历字符串&#xff0c;未出现的字母加入哈希集合&#xff0c;如果字母出现过&#xff0c;返回这个字母即可。 class Solution { public:char repeatedCharacter(string s) {unordered_set<char> S;for(auto &c:s)if(!S.count(c)) …

第二证券|72家公司接待机构过千,迈瑞医疗热度“断层领先”

2022年最终一个交易日&#xff0c;沪指以红盘收官&#xff0c;但年内A股商场震荡起伏&#xff0c;三大指数均收跌&#xff0c;其间&#xff0c;沪指全年下跌15%&#xff0c;创业板指跌近三成。 调研活动是出资者挖掘上市公司信息的重要来源&#xff0c;是洞悉商场主力资金意向的…