linux从青铜到王者第十四篇:linux网络基础第一篇

森明帮大于黑虎帮 森明帮大于黑虎帮     2022-12-15     391

关键词:

系列文章目录



前言


一、计算机网络的发展过程

1.独立模式

独立模式: 计算机之间相互独立。

2.网络互联模式

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

3.局域网LAN

局域网LAN: 计算机数量更多了, 通过交换机和路由器连接在一起。

4.广域网WAN

广域网WAN: 将远隔千里的计算机都连在一起

所谓 “局域网” 和 “广域网” 只是一个相对的概念.。像中国的广域网也可以看作一个比较大的局域网。

二、认识计算机网络协议

1.协议的概念

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

2.什么是网络协议

  • 协议总是指某一层的协议。准确地说,它是在同等层之间的实体通信时,有关通信规则和约定的集合就是该层协议,例如物理层协议、传输层协议、应用层协议。网络协议是通信双方,约定通信时使用的数据格式,进行网络通信。
  • 计算机生产厂商有很多。
  • 计算机操作系统, 也有很多。
  • 计算机网络硬件设备, 还是有很多。
  • 如何让这些不同厂商之间生产的计算机能够相互顺畅的通信? 就需要有人站出来, 约定一个共同的标准,大家都来遵守, 这就是 网络协议。

3.网络协议簇

指的是由很多网络协议组成的,称之为协议簇。

4.体系结构

体系结构规定了网络的分层,以及每一个分层需要完成的功能,以及每一个分层拥有的协议,还规定了每一个分层与自己上下层的关系。

5.OSI七层模型

  • OSI(Open System Interconnection,开放系统互连)七层网络模型称为开放式系统互联参考模型,是一个逻辑上的定义和规范。
  • 把网络从逻辑上分为了7层. 每一层都有相关、相对应的物理设备,比如路由器,交换机。
  • OSI 七层模型是一种框架性的设计方法,其最主要的功能使就是帮助不同类型的主机实现数据传输。
  • 它的最大优点是将服务、接口和协议这三个概念明确地区分开来,概念清楚,理论也比较完整. 通过七个层次化的结构模型使不同的系统不同的网络之间实现可靠的通讯。
  • 它的最大优点是将服务、接口和协议这三个概念明确地区分开来,概念清楚,理论也比较完整. 通过七个层次化的结构模型使不同的系统不同的网络之间实现可靠的通讯。
  • 但是, 它既复杂又不实用; 所以我们按照TCP/IP四层模型来讲解。

6.TCP/IP五层(或四层)模型

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


7.网络传输基本流程


网络数据的转发需要先经历自己的网络协议栈,进而通过网络将数据转化为光电信号,传输到对端机器,对端机器收到数据之后,需要经历自己的机器网络协议栈的层层向上提交,一直将数据提交到应用层的应用程序当中。

  • 【问题】微信是否是应用程序?微信产生的数据是不是应用层数据?
  • 答:微信是应用程序,因为微信是工作在应用层的,微信产生的数据是应用层数据。

8.数据包的封装

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

在计算机网络中层次的划分很细致,每一层实现的功能也很复杂。为了能够更明确地说明此过程,将两台主机通信为实例进行分析讲解,如下图所示:

9.数据包的分用

数据被封装完毕后通过网络传输到接收方后,将进入数据的解封装过程,这将是封装的一个逆过程,如下图所示:

10.数据的封装和分用

11.各层间通信(一)

  • 发送方与接收方各层之间必须采用相同的协议才能建立连接,实现正常的通信。
  • 应用层之间必须采用相同的编码解码规则,才能保证用户信息传输的正确性。
  • 传输层之间必须采用相同的端口号与协议关系,才能保证上层应用进程间的通信。
  • 网络层之间必须采用相同的逻辑寻址过程才能保证数据不会传输到错误的目的地。
  • 数据链路层之间如果协议不同,接收方无法“理解”数据的内容。
  • 物理层之间必须硬件接口规格相同,否则接收不到信号。

12.各层间通信(二)

在实际的网络环境中,发送方和接受方之间会有很多的硬件设备起到中转的作用,在下图中假设了一种通信结构,在两台计算机之间增加了两台交换机和路由器,发送主机的数据会通过以下中间设备到达接受主机。

  • 分析步骤:
  • 发送主机按照前面讲解的内容进行数据封装。
  • 从发送主机物理网卡发出的电信号通过网线到达交换机,交换机将电信号转换成二进制数据送往交换机的数据链路层。交换机根据数据帧头部的MAC地址将数据智能转发到对应的路由器设备,在转发前要重新将二进制数据转换成物理的电信号。
  • 路由器接受到数据后,会拆掉数据链路层的MAC头部信息,将数据包送往网络层,路由器将检测数据包头部的目标IP地址信息,并根据该信息进行路由转发,将数据报文转发到下一路由器上,在转发前要重新封装新的MAC头部信息,并将数据转换成二进制。
  • 之后的过程与前面大同小异。简单来说就是路由器接受电信号,将电信号转换成二进制数据发往网络层,然后根据MAC地址和IP地址进行重新封装转换为电信号进行转发,然后对应的交换机接受电信号,然后根据MAC地址传送到接收主机的网卡中。

13.认识IP地址

  • IP协议有两个版本, IPv4和IPv6. 整个的课程, 凡是提到IP协议, 没有特殊说明的, 默认都是指IPv4。
  • IP地址是在IP协议中, 用来标识网络中不同主机的地址。
  • 对于IPv4来说, IP地址是一个4字节, 32位的整数。
  • 我们通常也使用 “点分十进制” 的字符串表示IP地址, 例如 192.168.0.1 ; 用点分割的每一个数字表示一个字节, 范围是 0 - 255。
  • IP地址的作用:可以在网络当中唯一标识一台主机,一个公网IP地址只能被一台机器所占有,一个机器可以拥有多个IP地址。

14.认识MAC地址

  • MAC地址用来识别数据链路层中相连的节点。
  • 长度为48位, 及6个字节. 一般用16进制数字加上冒号的形式来表示(例如: 08:00:27:03:fb:19)。
  • 长度为48位, 及6个字节. 一般用16进制数字加上冒号的形式来表示(例如: 08:00:27:03:fb:19)。
  • 问题】对于接收方而言,所有的网络数据都是需要经历网络协议栈的,但是,怎么区分网络数据到底属于哪一个应用程序的。
  • 通过端口进行区分。

总结

以上就是今天要讲的内容,本文详细介绍了网络等基础知识的使用,网络提供了大量的方法供我们使用,非常的便捷,我们务必掌握。希望大家多多支持!另外如果上述有任何问题,请懂哥指教,不过没关系,主要是自己能坚持,更希望有一起学习的同学可以帮我指正,但是如果可以请温柔一点跟我讲,爱与和平是永远的主题,爱各位了。加油啊!

c++从青铜到王者第十四篇:stl之stack类的初识和模拟实现(代码片段)

系列文章目录文章目录系列文章目录前言一、stack介绍和使用1.stack的介绍2.stack的使用二、stack的模拟实现总结前言一、stack介绍和使用1.stack的介绍stack文档的介绍翻译:stack是一种容器适配器,专门用在具有后进先出操作... 查看详情

linux从青铜到王者第十八篇:linux网络基础第二篇之tcp协议

系列文章目录文章目录系列文章目录前言一、TCP面向字节流二、TCP粘包问题1.什么是TCP粘包问题2.TCP粘包问题的解决办法三、TCP异常情况四、TCP协议1.TCP协议段格式2.确认应答(ACK)机制3.超时重传机制4.连接管理机制1、TCP三次握手1.... 查看详情

linux从青铜到王者第十七篇:linux网络基础第二篇之udp协议

系列文章目录文章目录系列文章目录前言一、传输层1.再谈端口号2.端口号范围划分3.认识知名端口号(Well-KnowPortNumber)4.进程和端口号两个问题5.netstat查看网络状态二、UDP协议1.UDP协议端格式2.UDP的特点3.面向数据报4.UDP的缓冲区5.UDP... 查看详情

linux从青铜到王者第十五篇:linux网络编程套接字两万字详解(代码片段)

系列文章目录文章目录系列文章目录前言一、网络数据的五元组信息1.理解源IP地址和目的IP地址2.理解"端口号"和"进程ID"3.理解源端口号和目的端口号4.理解TCP协议5.理解UDP协议二、主机字节序<===>网络字... 查看详情

linux从青铜到王者第十六篇:linux网络基础第二篇之http协议(代码片段)

系列文章目录文章目录系列文章目录前言一、HTTP协议的概念二、HTTP协议URL的解释三、HTTP协议的数据流四、HTTP协议格式1.HTTP请求2.HTTP响应五、HTTP协议格式图解六、HTTP协议版本七、HTTP协议请求方法1.GET:获取资源2.POST:... 查看详情

c++从青铜到王者第二十四篇:c++的类型转换(代码片段)

系列文章目录文章目录系列文章目录前言一、C语言中的类型转换二、为什么C++需要四种类型转换三、C++强制类型转换1.static_cast类型转换2.reinterpret_cast类型转换3.const_cast类型转换4.dynamic_cast类型转换5.explicit总结前言一... 查看详情

linux从青铜到王者第十九篇:linux网络基础第二篇之滑动窗口流量控制拥塞控制延迟应答捎带应答

系列文章目录文章目录系列文章目录前言👮一、滑动窗口💰一、滑动窗口的由来💰二、滑动窗口存在的问题💷1.滑动窗口的大小💷2.数据包已经传输给对方,但是对方返回的ACK数据包丢失💷3.传输的... 查看详情

linux从青铜到王者第十二篇:linux进程间信号第二篇(代码片段)

系列文章目录文章目录系列文章目录前言一、阻塞信号1.信号其他相关常见概念2.在内核中的表示3.sigset_t信号集4.信号集操作函数5.sigprocmask函数6.sigpending函数二、捕捉信号1.内核实现信号的捕捉2.volatile关键字总结前言一、阻塞信... 查看详情

linux从青铜到王者第十三篇:linux多线程四万字详解(代码片段)

系列文章目录文章目录系列文章目录前言一、Linux线程概念1.什么是线程2.线程的优点3.线程的缺点4.线程的异常5.线程的用途二、进程和线程的对比1.进程和线程2.多进程的应用场景有哪些?三、线程控制1.POSIX线程库2.创建线程... 查看详情

linux从青铜到王者第二十篇:linux网络基础第三篇之ip协议

系列文章目录文章目录系列文章目录前言一、IP协议基本概念二、IPv4首部三、网络号和主机号四、早期地址管理方式五、CIDR(ClasslessInterdomainRouting)方式六、特殊的IP地址七、IP地址的数量限制八、路由控制总结前言一、IP协议基本... 查看详情

linux从青铜到王者第二十一篇:linux网络基础第三篇之数据链路层

系列文章目录文章目录系列文章目录前言一、数据链路层的以太网协议二、认识MAC地址三、对比理解MAC地址和IP地址四、ARP协议的作用五、ARP数据报格式五、ARP协议工作流程六、ARP缓存表七、DNS(DomainNameSystem)八、NAT协议九、NAPT协... 查看详情

设计模式从青铜到王者第四篇:创建型模式

系列文章目录文章目录系列文章目录前言一、创建型模式简介二、创建型模式之包含模式1.工厂方法模式2.抽象工厂模式3.生成器模式4.原型模式5.单例模式总结前言一、创建型模式简介创建型模式(CreationalPattern)对类的... 查看详情

c语言从青铜到王者第四篇·详解操作符(代码片段)

本篇前言C语言的各种操作符让我们对数据的算数操作有了可能,也为人类利用计算机实现各种算法提供了强力的工具。今天,就让我们深入的了解一下C语言中所有的操作符和它们的使用规则与注意事项,掌握它们是... 查看详情

lua从青铜到王者基础篇第十三篇:lua调试(debug)(代码片段)

系列文章目录文章目录系列文章目录前言🌲一、Lua调试(Debug)🌳二、另一个实例🌴三、调试类型💬🌲🌳🌴🌵总结前言🌲一、Lua调试(Debug)Lua提供了debug库用于提供创建我们自定义调试器的功... 查看详情

从青铜到王者,你只差这篇全网最全linux命令大全

〝古人学问遗无力,少壮功夫老始成〞从青铜到王者,你只差这篇全网最全linux命令大全。全网最全linux命令大全,从入门到精通,助力大厂橄榄枝,如果这篇文章能给你带来一点帮助,希望给飞兔小哥哥... 查看详情

从青铜到王者,你只差这篇全网最全linux命令大全

〝古人学问遗无力,少壮功夫老始成〞从青铜到王者,你只差这篇全网最全linux命令大全。全网最全linux命令大全,从入门到精通,助力大厂橄榄枝,如果这篇文章能给你带来一点帮助,希望给飞兔小哥哥... 查看详情

git从青铜到王者第四篇:git的分支与合并(代码片段)

系列文章目录文章目录系列文章目录前言一、Git分支1.Git分支简介2.Git分支创建3.Git分支切换二、Git分支的新建与合并1.新建分支2.分支的合并3.遇到冲突时的分支合并三、分支管理四、分支开发工作流1.长期分支2.主题分支五、远... 查看详情

linux从青铜到王者第二十二篇:linux高级io(代码片段)

系列文章目录文章目录系列文章目录前言一、五种IO模型1.阻塞IO2.非阻塞IO3.信号驱动IO4.异步IO5.IO多路转接二、高级IO重要概念1.同步通信vs异步通信2.阻塞vs非阻塞三、I/O多路转接之select1.select函数的作用2.select函数的原型3.fd_set结... 查看详情