网络初识部分

 1.网络

单机时代-局域网时代-广域网时代-移动互联网时代

局域网时代:通过路由器把几个电脑连接起来。

广域网时代:把更多的局域网连接到一起,构成的网络更庞大,可能已经覆盖了一个城市/国家/全世界。

2.什么是路由器?

路由器就是一个用来连接其他设备的中转站。

一般家用的路由器有5个接口(1个WAN和4个LAN),WAN是用来连接上级路由器的,LAN是用来连接电脑(实现多台电脑之间的通信,一个LAN口对应一台电脑)。

ps:一般的家用电脑只有一个网口。

3.什么是交换机?

是用来扩展路由器的端口。

eg:

 4.IP地址

是用来描述一台设备在网络中的地址,使用一个32位(4字节)数字表示(一般来说IP地址是用4个0~255的十进制数字并且使用3个点相隔表示=> 点分十进制)

5.端口

区别一个主机上不同的应用程序,一个端口对应一个应用程序,但是一个应用程序可能会绑定多个端口(是一个2字节的整数)。

1~1023范围内的端口号有特定的用途(0不使用),如果是要自定义端口建议使用1024~65535内的。

在实际通信过程中往往IP地址和端口号是成对出现的。

6.协议

是一种约定,约定通信双方按照什么样的方式来进行通信(传递数据)。

网络上本质是通过光/电信号来进行传输的。

7.协议分层

按照协议的定位/作用进行分类,并且约定了不同层次之间的“调用关系”。

(1)为什么需要协议分层?

平时写代码的时候,写的多了,往往需要把代码分成多个部分(拆分之后,更容易理解,是基于人的基本认知规律)。

如果一个大的协议来解决所有的问题,此时这个协议就非常大和复杂,不太容易让人理解。

相比之下,可以将这个大的协议给拆分成多个协议,让每个小的协议只是专注于做一小块事情,这样一来,代码就更容易理解。但是由于网络通信是很复杂的,往往一个协议会被拆分成很多很多的小协议,此时就需要对这些协议进行分层。

(2)好处:

a.协议进行分层之后,上层和下层协议彼此都进行了封装,使用上层协议不必过多关注下层,使用下层协议不必过多关注上层协议。

b.每一层协议可以根据需要灵活进行替换。

8.TCP/IP五层网络模型(还有个OSI七层网络模型)

(1)解释:

a.物理层:描述网络通信的硬件设备。

b.数据链路层:两个相邻节点之间的数据传输情况。

c.网络层:进行路线规划。

d.传输层:关注起点和终点。

e.应用层:应用程序如何使用这个数据(程序员最需关注的一点)。

(2)作用:

a.应用层:就是对应到应用程序(程序员手动实现的代码)。

b.传输层和网络层:也称操作系统。

c.数据链路层和物理层:驱动程序+硬件。

9.封装和分用

描述了网络通信过程中,基本的数据传输流程。

(1)封装:

是发送方进行的操作,目的在于给数据添加更多的“辅助信息”。从上层协议到下层协议,是一个层层对数据报进行拼接报头的过程。

eg:现在要A要通过QQ把一个消息传递给B

a.应用层

QQ应用程序,QQ就会把A输入的信息(hello)给打包成一个数据报(格式是啥并不知道,得QQ得程序员才知道),现在假设格式为:

用四个字段来进行分割,这里就构成了一个简单的应用层数据报(采用字符串拼接的形式),上述描述的规则,就是此处约定的应用层协议,但是具体用几个字段,字段的顺序如何,字段之间用什么分割,这些都是可以根据需要灵活更改。

b.传输层(使用UDP)

在这里就会对刚才的数据报进行打包,变成传输层的数据报,这里打包的过程还是字符串拼接(在刚才的基础上拼接上传输层报文)。传输层打包过后,会进一步转交给网络层。

c.网络层

这里在刚才的基础上拼接上IP报头(一个数据报包含报头和载荷),进一步交给数据链路层。IP报头中包含源IP和目的IP

d.数据链路层

这里在刚才基础上拼接上以太网报头和报尾。以太网报头中包含重要的信息:源mac地址和目的mac地址(物理地址,也是用来描述设备在网络上的地址)

e.物理层

把上述数据转换成0/1的二进制数据,通过光/电信号进行传输。

(2)分用:

当上述封装过程完成后,数据报发送出去之后,就会经过一系列的交换机和路由器的转发,当数据报到达接收方之后,就要对数据报进行分用。

a.物理层

拿到光/电信号=>二进制数据=>将得到的数据交给数据链路层(以太网数据报)

b.数据链路层

通过以太网协议对数据报进行解析,这个解析过程就会解析出报头,报尾和中间的载荷,然后把载荷部分进一步交给网络层处理。

c.网路层

通过IP协议对数据报进行解析,会解析出报头和载荷,进一步交给上层(传输层)。

d.传输层

通过UDP协议对数据报进行解析,会解析出报头和载荷,进一步交给上层。

e.应用层

此时的数据就是最原始的数据,就需根据端口号把数据交给QQ这个程序,然后QQ进一步解析这里的数据,这个解析过程也就是按照前面程序员自定义的协议来进行的。

10.传输层协议

通过网络可以让两个主机之间进行通信=>基于这样的通信来完成一定的功能。

进行网络编程的时候,需要操作系统提供一组api,通过这些api(可以认为是传输层与网络层之间的交互的路径,也就是socket api,通过该api可以完成不同主机之间,不同系统之间的通信)才能完成编程。

TCP与UDP这两种协议的工作原理差异很大,导致这两种协议进行网络编程的时候,存在一定的差别,故系统分别提供了两套api。

(1)区别:

a.TCP是有连接的,UDP是无连接的。(连接是抽象的描述)

此处连接的本质是建立连接的双方各自保存对方的信息。

两台计算机建立连接就是保存了对方的关键信息。

故而要想使用TCP进行通信,则通信双方必须建立连接,做完之后才能进行通信。

使用UDP通信,则不需要建立连接就可以进行通信。

eg:这里的建立连接就好比结婚证,一式两份,夫妻双方一人一份,内容一样(记录着双方的信息),妻子一看就知道谁是她的丈夫,丈夫也一样。

b.TCP是可靠传输的,UDP是不可靠传输的

可靠传输:A->B发送信息,消息如果没有到达B这一方,A能感受到,进一步就会采取一定的措施来进行补救(超时重传之类的)

不可靠传输:A->B发送信息,A只管发送信息,不管B有没有收到(A感知不到B的状态)

在网络通信中,A->B发送一个信息,是不可能100%到达的(网络环境很复杂),要想让数据尽可能被接收到,那应该都要采用TCP,为啥还要有UDP呢?

可靠传输意味着需要付出一定的代价(机制更复杂,传输速率会降低)

c.TCP是面向字节流,UDP是面向数据报的

此处的字节流与文件操作的字节流是一个意思,TCP和文件操作是相同的,以字节为单位来传输数据,UDP则是按照数据报为单位来进行传输的。

d.TCP和UDP是全双工的

一个信道允许双向通信,就是全双工的;只允许单向通信,就是半双工的。也就是在代码中使用一个socket对象就可以进行发送/接收数据。

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

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

相关文章

洛谷官方精选题单解析(持续更新~)

首页 - 洛谷 | 计算机科学教育新生态 https://www.luogu.com.cn/ 真题解析-CCF-GESP编程能力等级认证 https://gesp.ccf.org.cn/101/1010/index.html 我会陆续针对每一道题目发独立博客,剖析解题思路、知识点及代码。 目录 1、【入门1】顺序结构(1…

三维模型单体化软件:地理信息与遥感领域的精细化革命

在地理信息与遥感科学日新月异的发展浪潮中,单体化软件作为一股强大的驱动力,正引领着我们迈向空间信息处理与应用的新纪元。本文旨在深度解析单体化软件的核心价值、技术前沿、实践应用及面临的挑战,共同探讨这一技术如何塑造行业的未来。 …

client网络模块的开发和client与server端的部分联动调试

客户端网络模块的开发 我们需要先了解socket通信的流程 socket通信 server端的流程 client端的流程 对于closesocket()函数来说 closesocket()是用来关闭套接字的,将套接字的描述符从内存清除,并不是删除了那个套接字,只是切断了联系,所以我们如果重复调用,不closesocket()…

安卓主板_MTK联发科主板定制开发|PCBA定制开发

MTK联发科安卓主板,采用MT6762八核平台方案,支持谷歌Android 11.0系统,MT6762采用ARM八核A53内核芯片、主频高达2.0GHz,GPU采用ARM PowerVR GE8329650MHZ,支持主流19201080分辨率,支持硬解H.264&#xff0c…

Win10安装ChatTTS-2024-cuda10.1

0x00 前言 ChatTTS是专门为对话场景设计的文本转语音模型,例如大语言助手对话任务。它支持英文和中文两种语言。最大的模型使用了10万小时以上的中英文数据进行训练。目前在huggingface中的开源版本为4万小时训练且未SFT的版本。 0x01 准备环境 版本操作系统Win1…

鸿蒙内核源码分析(忍者ninja篇) | 都忍者了能不快吗

ninja | 忍者 ninja是一个叫 Evan Martin的谷歌工程师开源的一个自定义的构建系统,最早是用于 chrome的构建,Martin给它取名 ninja(忍者)的原因是因为它strikes quickly(快速出击).这是忍者的特点,可惜Martin不了解中国文化,不然叫小李飞刀更合适些.究竟有多块呢? 用Martin自…

本地Docker部署Navidrome音乐服务器与远程访问听歌详细教程

💝💝💝欢迎来到我的博客,很高兴能够在这里和您见面!希望您在这里可以感受到一份轻松愉快的氛围,不仅可以获得有趣的内容和知识,也可以畅所欲言、分享您的想法和见解。 推荐:kwan 的首页,持续学…

StarRocks 存算分离数据回收原理

前言 StarRocks存算分离表中,垃圾回收是为了删除那些无用的历史版本数据,从而节约存储空间。考虑到对象存储按照存储容量收费,因此,节约存储空间对于降本增效尤为必要。 在系统运行过程中,有以下几种情况可能会需要删…

《Cloud Native Data Center Networking》(云原生数据中心网络设计)读书笔记 -- 07数据中心的边缘

本章将帮助你回答以下问题 可以用哪些方式将 Clos 拓扑连接到外部网终?边缘部署路由协议的最佳实践是什么?企业应如何处理混合云中的连接? 连接模型 为什么要连接到外部世界? 数据中心连接到外部世界的原因很多。如果你要对外提供某种服务(例如搜索服务广告推荐系统或内…

35岁程序员转行大模型:如何把握行业机遇与个人发展

对于一位35岁的程序员想要转行到大模型领域,这是一个很好的时机,因为人工智能和大模型技术正在快速发展,并且有着广泛的应用前景。以下是一些具体的步骤和建议,可以帮助您顺利地完成这一转变: 基础知识学习 数学基础&a…

科技在日常生活中的革新

在科技日新月异的今天,‌我们的生活正经历着前所未有的变革。‌从智能家居到可穿戴设备,‌科技已经渗透到我们生活的每一个角落,‌深刻地影响着我们的生活方式和社会经济的发展。‌ 智能家居系统的出现,‌无疑是科技改变生活的典…

[鹏城杯 2022]简单的php

题目源代码 <?phpshow_source(__FILE__); $code $_GET[code]; if(strlen($code) > 80 or preg_match(/[A-Za-z0-9]|\|"||\ |,|\.|-|\||\/|\\|<|>|\$|\?|\^|&|\|/is,$code)){die( Hello); }else if(; preg_replace(/[^\s\(\)]?\((?R)?\)/, , $code…

深度剖析C++string(上篇)

目录 前言 1.C string类 2.string类中的常见构造 3.string类对象的容量操作 4.. string类对象的访问及遍历操作 5. auto和范围for(补充&#xff09; auto关键字 范围for 结束语 前言 C语言我们学习了字符串和字符串的相关函数&#xff0c;在C语言中&#xff0c;字符串是…

10 Java数据结构:包装类、数组(Array工具类)、ArrayList

文章目录 前言一、包装类1、Integer&#xff08;1&#xff09;基本用法&#xff08;2&#xff09;JDK5前的包装类用法&#xff08;了解即可&#xff0c;能更好帮助我们理解下面的自动装箱和自动拆箱机制&#xff09;&#xff08;3&#xff09;自动装箱与自动拆箱机制 --- 导致&…

【学习笔记】Day 21

一、进度概述 1、机器学习常识19-22&#xff0c;以及相关代码复现 二、详情 19、矩阵分解 矩阵分解是一个纯数学问题&#xff0c;但当给矩阵赋予现实意义后&#xff0c;矩阵分解就成为了使用数学应对机器学习问题的一类典型而巧妙的方法。 在线性回归分析中&#xff…

esp32c3 luaos

提示&#xff1a;文章写完后&#xff0c;目录可以自动生成&#xff0c;如何生成可参考右边的帮助文档 文章目录 前言一、介绍二、相关介绍2.1helloworld——2.2任务框架2.3消息传递 与消息订阅2.4uart2.5二进制数据/c结构体的打包与解析2.6 zbuffer库2.8 uart 485 数据解析2.9 …

缓存实现方式

缓存是一个常见的话题&#xff0c;因为它对于提高应用程序性能至关重要。缓存是一种存储数据的临时地方&#xff0c;以便快速访问数据&#xff0c;减少对原始数据源&#xff08;如数据库或文件系统&#xff09;的访问次数&#xff0c;从而提高应用程序的响应速度和吞吐量。 Jav…

如何应对突发技术故障和危机:开发团队的应急策略

开发团队如何应对突发的技术故障和危机&#xff1f; 在数字化时代&#xff0c;软件服务的稳定性对于企业至关重要。然而&#xff0c;即使是大型平台&#xff0c;如网易云音乐&#xff0c;也可能遇到突发的技术故障。网页端出现502 Bad Gateway 报错&#xff0c;且App也无法正常…

如何在VMware ESXI中创建Linux虚拟机并实现异地SSH远程访问

目录 ⛳️推荐 前言 1. 在VMware ESXI中创建Ubuntu虚拟机 2. Ubuntu开启SSH远程服务 3. 安装Cpolar工具 4. 使用SSH客户端远程访问Ubuntu 5. 固定TCP公网地址 ⛳️推荐 前些天发现了一个巨牛的人工智能学习网站&#xff0c;通俗易懂&#xff0c;风趣幽默&#xff0c;忍不…

重塑“我店”平台:绿色积分引领的数字消费新纪元

在数字化转型的洪流中&#xff0c;“我店”平台凭借其创新的绿色积分体系异军突起&#xff0c;成为市场中的璀璨新星。本文将深度剖析“我店”的运营模式、市场效应及其如何通过绿色积分机制开创消费新潮流。 一、崛起之路与市场震撼力 自2021年盛夏在上海启航以来&#xff0c…