初识网络:IP、端口、网络协议、TCP-IP五层模型

news2025/1/11 10:11:17

目录

一、了解IP地址: 

二、了解端口号:

三、网络协议

      网络协议的三要素:

        ①语法

        ②语义

        ③时序

  四、协议的分层(TCP/IP五层模型)

      ①应用层

     ②传输层(也称为运输层)

   ③网络层

   ④数据链路层

    ⑤物理层

五、A用户通过QQ给B发送一个字符串,会经历怎样的过程

     经历的第一层:应用层

      经历的第二层:传输层

     经历的第三层:网络层

   经历的第四个阶段:数据链路层

 经历的第五层:物理层


一、了解IP地址: 

      IP地址主要用于标识网络主机。可以理解为,IP是一台主机的网络地址

      如果想让本机和其他的电脑或者云端的服务器建立网络通信,那么就需要获取到对方电脑的IP地址。我们可以认为,任意两个不同的服务器(电脑)的IP都是不一样的。


       IP地址一般都是采用"点分十进制"的方式来进行表示的(a.b.c.d),如"100.4.5.6"这样的表示方式。

       同时,a,b,c,d都是0~255之间的十进制整数。

       特殊的IP:127.0.0.1,这个IP地址仅仅用于表示本机到本机的网络通信.


二、了解端口号:

       端口号用来标识主机当中用来发送数据、接收数据的进程。

       简单来说,端口号就是用来标识一台主机当中的进程

       在网络通信当中,进程可以通过绑定一个端口号,来发送、接收网络数据。


       我们常说的MYSQ应用程序占用的是3306端口号。那么,如果想在本机连接云端的服务器的MYSQL数据库,那么就需要知道两个数据:

①云端服务器的IP地址;

②云端服务器的MYSQL占用端口号(默认为3306),这个端口就是用来接收数据的

          可以这样抽象地理解:一栋楼当中,IP代表这栋楼的编号:例如1栋,2栋,3栋等等......

          端口号为具体哪一家的门牌号,例如101、202、303等等......

          如果外卖小哥想送餐到某一家用户当中,一定需要知道这一家在哪栋, 门牌号是多少


三、网络协议

       所谓的协议,其实就是网络通信(网络之间的数据传输)经过所有的网络设备都必须共同遵从的一组约定、规则。

       例如怎样建立连接、怎样互相识别等等。只有遵守这个约定,计算机之间才可以进行相互通信交流。


      网络协议的三要素:

        ①语法

       数据与控制信息的结构或者格式。

       这就好比,假如一堂课上面,有东北地区的学生,有中原地区的学生,有华南地区的学生。他们各自会讲各自的方言,但是,老师为了照顾所有的的同学,统一采用普通话授课这个道理一样。

        因为,只有采用了普通话授课,大家才都可以知道老师在讲什么


        ②语义

         需要对发出的信息完成何种动作来响应。

         语义主要用来说明通信双方应当怎么做,用于协调与差错处理的控制信息。

         例如:在课堂上,按照规定,老师布置了作业,那么学生就一定要去完成。

         那么,学生完成老师布置的作业这个响应,就是语义


        ③时序

          对事件的实现顺序的详细说明:

          时序定义了何时通信,通信先讲什么,再讲什么,传输的速度等等。 

          简单来说,就是对通信的顺序进行一个简单的规定


  四、协议的分层(TCP/IP五层模型)

           


    在上述模型当中:越往上,越接近应用程序,越往下,越接近硬件设备。

    上图当中,"应用层"、"表示层"、"会话层"这三层统一被称为应用层

     下面,将分别介绍各个层的含义及其作用:


      ①应用层

         应用层只需要专注于为用户提供应用功能,负责应用程序间的沟通常见的应用层有:HTTP、FTP、Telnet、DNS、SMTP等。

        当需要数据传输的时候,应用层就会把数据往下层传递,也就是传输层

        应用层工作在操作系统的用户态,而其他层面均工作在内核态


     ②传输层(也称为运输层)

        负责两台主机之间的数据传输 

        传输层协议为运行在不同主机上的应用进程之间提供了逻辑通信功能 

        传输层注重的是端到端之间的传输。常见的传输层协议有TCP,UPD等等的协议。

        可以这样理解:

        如果A主机想发送消息给B主机的mysql应用程序,那么A发送消息的时候,应当得知B主机的IP地址以及mysql应用程序占用了B主机的哪一个端口(假设是3306,并且B服务器的mysql应用程序已经启动了,只有启动了的应用程序才会占用端口)。

       只有A指定了具体的消息是转发给B的哪一个端口,B主机才可以正确把消息传递给它占用3306端口的进程

       需要注意的是,发送方和接收方的所有协议都需要一致。例如发出方使用了UDP协议,接收方一定也需要使用UDP协议


   ③网络层

       负责地址管理和路由器选择 

       网络层,负责网络输出传输路径的规划

       假如A主机向B主机发送了一个网络信号,那么这个信号通过哪些路径传输,可以效率最高,性能最好。

       也就是主机主机之间,负责传输数据的时候就需要通过网络层。


       下面,想通过一个故事,来描述一下网络层和传输层:

        如图:下面是两家人,小红一家,一共5人;小明一家,也是5人;

假如,他们两家人的交往都比较密切,每一周都需要互相写邮件。

根据常识,既然要写邮件,那么肯定要明确谁写给谁 

比如:  (Ⅰ)小红的妈妈写给小明的妈妈;

          (Ⅱ)小红的爸爸写给小明的爸爸;

        (Ⅲ)小红写给小明。


       他们写好信之后,小红专门负责把他们一家写好的信收集起来,放到邮筒内;然后,运送邮件的车辆会每隔一段时间来把这些邮件运送到邮政局,然后邮政局又会把这些新建分组,最后放到小明一家的邮筒当中,由小明专门负责把他们一家收到的邮件分发给自己的家人。

        以上写信的过程,可以进行一个这样的类比:

        小明一家小红一家各自视为一台主机

         

        小红以及小红的家人各自视为小红家里的进程,小明一家同理

         

        传输层的协议:小红和小明(TCP/UPD等等协议)

        网络层协议:邮政服务

        

        应用层报文=信封上面的字,也就是需要传输的信息

         因此:

         可以得出以下结论:传输层(运输层)仅仅工作在端系统,也就是自己的主机的系统。

         运输层协议将来自应用进程所需要传输的信息送达到网络边缘(即网络层)

         然后网络层就负责主机与主机之间的数据传输。

        


   ④数据链路层

       负责设备之间的数据帧的传送和识别 

       数据链路层,主要负责的是节点节点之间的通信。

       此处,我们需要知道网络通信当中什么是节点。

       根据常识,我们的电脑如果想上网,通过qq或者微信发送消息的话,一定需要一个wifi,也就是路由器。

       那么,可以这样理解,一个节点,就代表一台主机或者一台路由器或者一台交换机

       因此,沿着通信路径连接,相邻节点的通信道路,称之为链路

       链路层协议交换的数据单元为帧  


      我们再来画一张图,区分一下网络层和数据链路层:

     

       在上图当中,链路就是各个节点之间的连线,数据链路层负责的就是相邻节点之间的通信。

例如①链路或者②链路

       而网络层,就负责路径的规划,是选择上面那一条路径比较好呢,还是下面那一条路径比较好呢?这个就交给网络层来负责处理。

也就是网络层负责规划主机1和主机2之间的通信是通过:

             ①链路--->②链路--->③链路--->④链路,还是

             ⑤链路--->⑥链路--->⑦链路这样的路径


    ⑤物理层

       负责光/电信号的传递方式

       例如像通信使用的网线、网口等等的设备。因此,咱们使用的网线、网口都是相同的规格的。这就是为了方便网络通信而进行的统一。


        TCP/IP的五层模型当中,越往下的,越接近硬件设备,越往上的,越接近用户。

        网络分层这里,相当于上层协议调用下层协议,下层协议给上层协议提供服务。

        这就好像公司的领导架构一样:最高层是应用层,越往下就越来越接近公司的最基层。

        并且下层一定需要听命于上层的指令。


五、A用户通过QQ给B发送一个字符串,会经历怎样的过程

        假如A发送一个字符串"hello”给B用户,那么:

     经历的第一层:应用层

       下面,假设存在这样的一个应用层的协议格式:发送方的QQ号,接收方的QQ号,发送的时间,发送字符串的内容:

发送者接收者发送时间聊天内容
123456776543212023-1-14"hello"

       需要注意的是,应用层的数据,具体格式长什么样,这个其实是由程序员在代码的编写阶段规定的,并不是一个确定的格式。

        应用层是以文件为单位进行传输的 


      经历的第二层:传输层

         应用层,通过调用操作系统的api,把应用层的数据交给传输层。(此时已经进入了操作系统内核了)

         传输层协议,最常见的有TCP/UDP协议。

         假如此处使用的是UPD协议,那么,首先会在应用层需要传输的数据的基础上面构造出一个UDP报头  这个报头是一个特定格式的字符串,会在后面的文章当中详细说明。

        这里先简单介绍一下:UDP报头当中,会涉及到两个比较重要的信息:

        源端口目的端口

UDP报头(包含源端口和目的端口)123456776543212023-1-14"hello"

        除了UPD报头,往后的数据,也就是应用层传输来的数据,被称为"UDP载荷"。

         

        包装好之后,会把UDP报头+UDP载荷封装成一个UDP数据段

        需要注意的是,传输层是以为单位进行传输的


     经历的第三层:网络层

       网络层比较知名的协议就是IP协议。

       IP协议,会针对传输来UDP数据报,打包成一个IP数据报:

       也就是,针对UDP数据报,再次拼接了一个IP报头。

       IP报头,也是一个字符串。其中,包含的比较核心的信息就是源IP目的IP

       即:发送的主机IP是什么,目的的主机IP是什么

IP报头(包含源IP、目的IP)UDP报头(包含源端口和目的端口)123456776543212023-1-14"hello"

  网络层是以为单位进行数据传输到数据链路层的


         到了这里,就可以得出,一次通信当中的基础五元组:

         ①源IP

         ②源端口

         ③目的IP

         ④目的端口

         ⑤协议类型


   经历的第四个阶段:数据链路层

       网络层的数据包准备好了,就需要交给数据链路层进行进一步地"打包"。

       基于上述数据,需要打包成一个"以太网数据帧"。

       以太网数据帧,会对网络层传输过来的数据据包进行进一步的"包装”,又多了两个部分:以太网帧头以太网帧尾

以太网帧头IP报头(包含源IP、目的IP)UDP报头(包含源端口和目的端口)123456776543212023-1-14"hello"以太网帧尾

       其中,数据链路层是按照为单位进行传输的


 下图来源于《小林coding》

  网站地址:

   2.1 TCP/IP 网络模型有哪几层? | 小林coding


 经历的第五层:物理层 

     到了物理层,就会把数据帧转化为二进制信号(0100001....)这样,然后传输出去。


       从应用层----------》物理层的这一个过程称为封装

       同样地,作为接收方,也需要把数据进行"分用"。

       简单概括一下:

       接收方的物理层会接收到01000111......的电信号,然后交给接收方的数据链路层,然后去掉帧头、帧尾并且把数据传输到网络层,再由网络层解析IP等等的信息,去掉IP头之后,交给接收方的传输层,再由接收方的传输层解析端口信息等等,解析完毕之后,再去掉TCP/UP头,这个时候就只剩下应用数据了,因此就可以反馈给接收设备的应用层。

       以上过程,和封装对立,被称之为"分用"。

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

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

相关文章

【Java基础知识 2】Java中常用的48个关键字和2个保留字 || Java命名规范(从此告别起名难)

本文已收录专栏 🌲《Java进阶之路》🌲 目录 本文已收录专栏 🌲《Java进阶之路》🌲 Java中常用的48个关键字和2个保留字 关键字 保留字 Java命名规范(从此告别起名难) 01、包(package&#…

Spring MVC 整合 Shiro 权限控制

Apache Shiro 是一个功能强大且灵活的开放源代码安全框架,可以细粒度地处理认证 (Authentication),授权 (Authorization),会话 (Session) 管理和加密 (cryptography) 等企业级应用中常见的安全控制流程。 Apache Shiro 的首要目标是易于使用和…

python实现excel和csv中的vlookup函数

本篇博客会介绍如何使用python在excel和csv里实现vlookup函数的功能,首先需要简单了解一下python如何操作excel 1. python处理excel 1.1 删除excel中指定行 在文件夹里创建了一个excel文件,可以看到里面放的是三国人物的数据 会发现在【蜀】里&#…

ESP-IDF:在C++环境下实现动态数组例程,包括初始化,添加数值,查找,删除,打印等功能

代码: /* 动态数组 */ struct DYNAMICARRAY { int *pAddress; int size; int capacity; }; DYNAMICARRAY *initialDynamicArray() { DYNAMICARRAY *p (DYNAMICARRAY *)malloc(sizeof(DYNAMICARRAY)); p->size 0; p->capacity 5; p->pAddress (int *)…

数据结构与算法--python版-01

文章目录基本概念数据存储方式算法案例基本概念 程序 数据结构 算法 数据结构,数据的存储(物理结构)及相互间的关联关系(逻辑结构); 线性表(顺序表、链表、队列、栈),一个前驱,一…

口语语言理解最新进展及前沿

口语语言理解 作为任务型对话系统的核心组件,目的是为了获取用户询问语句的框架语义表示信息,进而将这些信息为对话状态的追踪模块DSTDSTDST, 以及自然语言生成模块NLGNLGNLG所使用 SLUSLUSLU任务通常包含以下两个任务: 意图识别任务: intent detectio…

企企购商城 | 破解降本难题,非生采购“利器”来了

近年来,疫情反复无常,全球市场环境动荡不安,在瞬息万变的环境下,很多企业都处于降本处境,采购降本成了其中的重要一环。其中,非生采购作为贯穿企业各个职能板块的采购活动,众多国际先进的企业已…

应用PID算法对ABS系统的仿真和分析

1、内容简介略635-论文V2 可以交流、咨询、答疑2、内容说明摘要:本文旨在设计一种利用模糊控制理论优化的pid控制器,控制abs系统,达到对滑移率最佳控制范围的要求 ,所提出的方案采用级联控制架构:设计用于外环中的车轮…

零基础开始QT绘图(6)

前面我们开始提到了GraphicView的使用,也提到GraphicsItem的使用,并且开始了自定义GraphicsItem的编写,而且上次我们的GraphicsItem也是可以拖动了,但这离我们需要的效果还有一定的距离。 所以,这次,我们进…

工程电磁设备在2018年杭州电磁大会的报告

1 方法原理 本篇是对多频电磁方法,应用的解读。 本汇报讲述了EMI传感器的基本情况,以及用手持多频电磁仪进行实际探测应用的例子。 什么是电磁感应?用发射装置(TX)激发谐波,产生一次场(Primary field),地下导体目标会相应产生涡流电磁场,产生二次场,被接收装置(RX…

「网络安全渗透」如果你还不懂CSRF?这一篇让你彻底掌握

1 什么是 CSRF 面试的时候的著名问题:"谈一谈你对 CSRF 与 SSRF 区别的看法" 这个问题,如果我们用非常通俗的语言讲的话,CSRF 更像是钓鱼的举动,是用户攻击用户的;而对于 SSRF 来说,是由服务器…

14.0、Linux-yum方式安装 docker

14.0、Linux-yum方式安装 docker 第一步: 检测 CentOS7 -> cat /etc/redhat-release 第二步: 用以下命令安装准备环境 -> yum -y install gcc yum -y install gcc-c 第三步: 如果之前安装过 docker 的,先用以下命令删…

【每日一题】【LeetCode】【第十三天】移动零

解决之路 题目描述 测试案例(部分) 第一次 看到这题目,第一时间还真想到了双指针法(暴力解法是个会写代码的都能第一时间想到,所以自己学会了尽量不第一时间用暴力解法) right的初始位置元素若为0&…

Jenkins-Slave分布式架构搭建

♥ Jenkins的分布式构建,在Jenkins的配置中叫做节点,分布式构建能够让同一套代码或项目在不同的环境(如:Windows和Linux系统)中编译、部署等。 ♥ 将jenkins项目发布在不同服务器上(分布jenkins工作空间,部署项目到不同…

java 简单了解spring之(IOC容器)

IOC 容器 是spring的一个重要组成部分 IOC 翻译过来叫控制反转 他在做的事是 降低计算机代码的耦合度 这个过程叫IOC 通过控制反转 对象在被创建时 由一个调控系统内所有对象的外界实体将将其所依赖的对象引用传递给他,也可以说,依赖被注入到对象中 说简…

[oeasy]python0048_取整_int_float_浮点型_cast_扮演_tab_制表键_制表符

转化为10进制 回忆上次内容 上次 把其他进制 转化回 十进制 用的是 int 函数 int 来自于 integer 同源词 还有 integrateentire意思都是完整的 完整的 和 零散的 相对 可以把 零散的小数 转化为 完整的整数吗?🤔 取整 可以 把一个浮点型的小数 取…

【Proteus仿真】【51单片机】酒精浓度检测系统设计

文章目录一、功能简介二、软件设计三、实验现象联系作者一、功能简介 本项目使用Proteus8仿真51单片机控制器,使用LCD1602显示模块、按键模块、LED和蜂鸣器、MQ-3酒精传感器模块等。 主要功能: 系统运行后,LCD1602显示酒精浓度值和阈值&…

【自学Docker】Docker命令

Docker命令 Docker命令分类 Docker环境信息 docker [info|version]Docker容器生命周期管理 docker [create|exec|run|start|stop|restart|kill|rm|pause|unpause]Docker容器操作运维 docker [ps|inspect|top|attach|wait|export|port|rename|stats]Docker容器rootfs命令 …

AMBA--AHB总线协议学习及Verilog实现与仿真(一)

1、AHB总线概述 AHB:Advanced High-performance Bus,即高级高性能总线。AHB总线是SOC芯片中应用最为广泛的片上总线。下图是一个典型的基于AMBA AHB总线的微控制器系统: 基于AMBA AHB的设计中可以包含一个或多个总线主机,通常一个系统里至少…

MySQL——如何正确的显示随机消息

在之前的文章中有介绍order by语句的几种执行模式。考虑如下场景:有一个APP,有一个随机显示英语单词的功能,也就是根据每个用户的级别有一个单词表,然后这个用户每次访问首页的时候,都会随机滚动显示三个单词。会发现随…