辽宁网站建设公司电话,html5 网站正在建设中,华为开发者大会,深圳58同城招聘网#x1f941;作者#xff1a; 华丞臧. #x1f4d5;专栏#xff1a;【网络】 各位读者老爷如果觉得博主写的不错#xff0c;请诸位多多支持(点赞收藏关注)。如果有错误的地方#xff0c;欢迎在评论区指出。 推荐一款刷题网站 #x1f449; LeetCode刷题网站 文章… 作者 华丞臧. 专栏【网络】 各位读者老爷如果觉得博主写的不错请诸位多多支持(点赞收藏关注)。如果有错误的地方欢迎在评论区指出。 推荐一款刷题网站 LeetCode刷题网站 文章目录一、计算机网络背景1.1 网络发展1.2 协议二、网络协议初识2.1 协议分层2.1 OSI七层模型2.2 TCP/IP五层(或四层)模型三、网络传输基本流程3.1 网络和操作系统3.2 网络传输流程图3.3 数据包封装和分用四、网络中的地址管理4.1 认识IP地址4.2 认识MAC地址一、计算机网络背景
1.1 网络发展 独立模式在发展之初计算机之间相互独立。 网络互联多台计算机连接连接在一起完成数据共享。 局域网LAN计算机数量更多了通过交换机和路由器连接在一起局域网内部没有路由器。 广域网WAN将远隔千里的计算机都连在一起局域网通过路由器连接形成广域网。 所谓 “局域网” 和 “广域网” 只是一个相对的概念. 比如, 我们有 “天朝特色” 的广域网, 也可以看做一个比较大的局域网。 重新看待计算机结构以理解计算机通过网络互联的可能性根据冯诺依曼体系结构一台计算机由输入输出设备、存储器和中央处理器构成如下图 那么上图中计算机上的硬件如何进行数据交互的呢毫无疑问设备和设备之间一定要有线连接起来只不过这些线比较短并且藏在计算机内部通常用户是看不见的那么计算机体系结构本质上也可以看做一个小型网络。其次我们也可以使用多主机互相连通构建宏观的冯诺依曼体系结构而多主机连接本质上也是通过“线”连接起来的–我们称之为网线也有用无限WAN连接。
跨主机与主机内的小型网络不同的是跨主机连接线变长了线变长了相应地数据传输的可靠性、效率降低了如何寻找对方的难度上升了为了保证长距离传输的可靠性、效率各种新的设备诞生了如路由器、交换机。
1.2 协议
计算机之间的传输媒介是光信号和电信号. 通过 “频率” 和 “强弱” 来表示 0 和 1 这样的信息要想传递各种不同的信息计算机之间进行通信需要约定好双方的数据格式。在计算机当中把这种约定称为协议协议是一种约定。
思考只要通信的两台主机约定好协议就可以了吗 并不是计算机的生产厂商有很多如联想、华硕、小米、华为等计算机操作系统也有很多如windows、苹果、Linux等计算机网络硬件设备同样有很多要让这些不同的品牌的计算机实现相互顺畅的通信就必须制定一个共同的标准大家都来遵守这就是网络协议。 二、网络协议初识
2.1 协议分层
软件是可以分层的在学习编程之初比如学习C语言时起初我们编写代码都是放在一个.c文件中随着学习的深入我们知道可以将函数的声明和定义分离并且在主函数文件中包含声明文件即可使用自己编写好的函数这就是在软件上的分层main函数是一层声明定义是第二层。 为什么要分层 软件在分层的同时也把问题归类了方便排查问题分层可以让代码逻辑更加简单分层的本质软件上对代码进行解耦便于工程师进行软件维护网络本身的代码就是层状结构层状结构是软件中非常重要的结构几乎任何软件都离不开层状结构。 层状结构下的网络协议我们认为同层协议都可以认为自己在和对方直接通行忽略底层细节因此同层之间一定都要有自己的协议。
2.1 OSI七层模型
OSIOpen System Interconnection开放系统互连七层网络模型称为开放式系统互联参考模型是一个逻辑上的定义和规范;把网络从逻辑上分为了7层. 每一层都有相关、相对应的物理设备比如路由器交换机;OSI 七层模型是一种框架性的设计方法其最主要的功能使就是帮助不同类型的主机实现数据传输;它的最大优点是将服务、接口和协议这三个概念明确地区分开来概念清楚理论也比较完整. 通过七 个层次化的结构模型使不同的系统不同的网络之间实现可靠的通讯;但是, 它既复杂又不实用。
分层名称功能7应用层针对特定应用的协议6表示层设备固有数据格式和网络标准数据格式的转换5会话层通信管理负者建立和断开通信连接数据流动的逻辑通路。管理传输层以下的分层4传输层管理两个节点之间的数据传输。负者可靠传输确保三个月后又被可靠地传送到目标地址3网络层地址管理与路由选择2数据链路层互连设备之间传送和识别数据帧1物理层以“0”、“1”代表电压的高低。灯光的闪灭。界定连接器和网线的规格。2.2 TCP/IP五层(或四层)模型
TCP/IP是一组协议的代名词它还包括许多协议组成了TCP/IP协议簇.。 TCP/IP通讯协议采用了5层的层级结构每一层都呼叫它的下一层所提供的网络来完成自己的需求。
物理层: 负责光/电信号的传递方式. 比如现在以太网通用的网线(双绞 线)、早期以太网采用的的同轴电缆 (现在主要用于有线电视)、光纤, 现在的wifi无线网使用电磁波等都属于物理层的概念。物理层的能力决 定了最大传输速率、传输距离、抗干扰性等. 集线器(Hub)工作在物理层.数据链路层: 负责设备之间的数据帧的传送和识别. 例如网卡设备的驱动、帧同步(就是说从网线上检测 到什么信号算作新帧的开始)、冲突检测(如果检测到冲突就自动重发)、数据差错校验等工作. 有以太 网、令牌环网, 无线LAN等标准. 交换机(Switch)工作在数据链路层.网络层: 负责地址管理和路由选择. 例如在IP协议中, 通过IP地址来标识一台主机, 并通过路由表的方式规 划出两台主机之间的数据传输的线路(路由). 路由器(Router)工作在网路层.传输层: 负责两台主机之间的数据传输. 如传输控制协议 (TCP), 能够确保数据可靠的从源主机发送到目标 主机.应用层: 负责应用程序间沟通如简单电子邮件传输SMTP、文件传输协议FTP、网络远程访问 协议Telnet等. 我们的网络编程主要就是针对应用层. 物理层考虑的比较少因此很多时候也可以称为 TCP/IP四层模型一般而言 对于一台主机, 它的操作系统内核实现了从传输层到物理层的内容对于一台路由器, 它实现了从网络层到物理层对于一台交换机, 它实现了从数据链路层到物理层对于集线器, 它只实现了物理层 三、网络传输基本流程
3.1 网络和操作系统
体系结构直接决定数据包在主机内进行流动的时候一定要进行自顶向下或者自底向上进行流动的。 计算机发数据需要底层硬件转发用户层数据无法直接抵达硬件必须贯穿操作系统而网络协议栈隶属于操作系统因此必须自顶向下交付给硬件发数据一般是用户发给用户底层硬件没办法直接将数据发给用户必须贯穿操作系统和协议栈才能将数据交给用户。因此需要自底向上。 3.2 网络传输流程图
重谈协议计算机视角看待协议体现在代码逻辑上计算机通过协议完成对数据包的转发体现在数据上计算机为了维护协议在传输的数据上一定新增其他的协议数据。报头每一层在要交付给下一层的数据上添加上本层的协议数据拼接在原始数据的开头其中添加的协议数据称为报头。
如果两台局域网处于同一个局域网这两台主机是可以直接通信的以太网最常见的一种局域网标准。站在系统的角度以太网就是临界资源。 局域网通信的原理 每一台主机都要有唯一的标识该主机对应的MAC地址MAC地址主要工作在局域网中用来标识主机的唯一性在同一碰撞域中各个主机发送的信息会发生碰撞无法准确的接收对应的信息每一台主机都能够识别域中发生了碰撞每台主机都会检测域中有无碰撞(碰撞避免)检测到无碰撞发生时再发送信息。 碰撞域在一局域网中任何一台主机在任何时候都可以随时发消息。 在LInux上查看机器的MAC地址
跨网段的主机的文件传输. 数据从一台计算机到另一台计算机传输过程中要经过一个或多个路由器。 在上图的过程中MAC地址用于在局域网中标定主机的唯一性而IP地址用来在广域网公网标定主机的唯一性。在远距离传输中数据传输会经过多个局域网在数据通过不同的局域网时MAC地址是在不断变化的因为数据需要通过不同路由器传输路由器用于连接两个不同的局域网而数据中的IP地址是不变的。从上图可以得出结论IP网络屏蔽了底层网络的差异所有的IP层向上的协议发送和接收主机看到的数据是一模一样的。 例子假如张三在长沙读大学放假了张三要回家所以张三买了去武汉的高铁票那么张三的起点就是长沙目的地就是武汉在上了高铁之后高铁会经过一个一个的站直到到了武汉张三才会下高铁。那么在这个过程中源IP地址就是起点长沙目的IP地址就是武汉源MAC地址是高铁在中途停留的某个高铁站而目的MAC地址就是高铁下一个将要停留的高铁站。 3.3 数据包封装和分用
不同的协议层对数据包有不同的称谓,在传输层叫做段(segment),在网络层叫做数据报 (datagram),在链路层叫做帧(frame)。应用层数据通过协议栈发到网络上时,每层协议都要加上一个数据首部(header),称为封装(Encapsulation).。首部信息中包含了一些类似于首部有多长, 载荷(payload)有多长, 上层协议是什么等信息。数据封装成帧后发到传输介质上,到达目的主机后每层协议再剥掉相应的首部, 根据首部中的 “上层协议字段” 将数据交给对应的上层协议处理。
下图为数据封装的过程
有效载荷本层需要传递的数据注意是没有添加本层报头的数据称为有效载荷。 下图为数据分用的过程
首先需要注意每一层都有多种协议因此数据包在添加报头的时候也要考虑未来解包的时候将自己的有效载荷交付给上一层的哪一个协议。将有效载荷交付给上层的协议称为有效载荷的分用过程。 通过数据封装和分用的过程可以得出以下两个结论
一般而言任何报头属性里面一定要存在一些字段用来支持封装和解包一般而言任何报头属性里面一定要存在一些字段用来支持进行分用
四、网络中的地址管理
4.1 认识IP地址
IP协议有两个版本, IPv4和IPv6。目前一般的使用的都是IPV4。
IP地址是在IP协议中, 用来标识网络中不同主机的地址对于IPv4来说, IP地址是一个4字节, 32位的整数我们通常也使用 “点分十进制” 的字符串表示IP地址, 例如 192.168.0.1 ; 用点分割的每一个数字表示一个 字节, 范围是 0 - 255。
4.2 认识MAC地址
MAC地址用来识别数据链路层中相连的节点长度为48位, 及6个字节. 一般用16进制数字加上冒号的形式来表示(例如: 08:00:27:03:fb:19)在网卡出厂时就确定了, 不能修改. mac地址通常是唯一的(虚拟机中的mac地址不是真实的mac地址, 可能会冲突; 也有些网卡支持用户配置mac地址)。