ARTICLE DETAIL

资讯详情

深耕网站建设与运营推广的一线实战洞察。

初识网络通信,网络发展背景,TCP/IP五层模型简介

初识网络通信,网络发展背景,TCP/IP五层模型简介 前言hello hello这里是洋不写bug~欢迎大家点赞关注收藏从这篇博客开始进入到网络通信部分的解析这部分知识内容是非常多的这篇博客会解析一些网络通信的基础内容包括计算机网络的发展背景、网络通信中的术语、TCP/IP五层模型的基础解析个人主页洋不写bug的博客所属专栏JavaEE学习铁汁们对于JavaEE的各种常用核心语法都可以在上面的前端专栏学习专栏正在持续更新中有问题可以写在评论区或者私信我哦~1网络发展背景网络的发展过程还是比较有趣的这部分铁汁们可以当成小故事来看在19世纪末到二战结束这段时间最先进的通信方式基本上就是电话和电报60年代初美苏冷战持续升级美国军方开始推进世界上第一个计算机网络——阿帕网APRA的研发当时搭建的网络节点设备和节点之间的连接关系是错综复杂的有很多的冗余路径这样设计的好处就是一个节点要跟另一个节点通信有多条路径能走可以用其他节点作为数据中转站这样能够在遭受核打击时就算部分节点损坏网络整体的通信功能不至于瘫痪冷战结束前后计算机开始快速的发展大概是2000年国内计算机开始大规模出现但是此时的计算机大多是没有网络的玩游戏也只能玩单机游戏在2003年之前在网吧中玩游戏如果想要跟真人玩家对抗需要通过局域网基本上只能跟同网吧的玩家联机对战原理就是通过网线把要联机对战的计算机连接到一台交换机上交换机传输交换数据让两台计算机能够联机比如网吧中的六台机子想要联机PK一下就把这六台机子通过网线连到交换机上六台机子可以相互传输数据整体就构成了一个局域网2003年之后网吧开始逐渐接入互联网越来越多的游戏能够全国联机但是初期网络可能时常有卡顿前面提到通过交换机将设备连接起来组成一个局域网就可以通过路由器将这些局域网连接起来构成一个更大的网络再通过一个更大的路由器把这些大的网络再连接起来这样以此类推就构成了广域网如下图这个广域网和局域网只是相对的概念一般一个机房或者一栋楼中搭建的网络就是局域网连通一座城市、或者连通一个省就是广域网最大的广域网就是互联网互联网是把世界上无数个局域网连接在一起进行全球通信2007年乔布斯发布初代iPhone是移动互联网时代的标志性起点移动互联网的核心特征互联网不再绑定台式电脑而是随时随地由随身便携智能终端手机接入网络。2010年乔布斯发布iPhone4把智能手机带入成熟时代相比之前的手机可以说是全面升级此后安卓系统也开始崛起三星、华为、小米手机接踵而至手机开始蓬勃发展也进入了程序员的黄金时代因为很多app都需要程序员来开发2网络基础1IP在JDBC连接mysql数据库时代码如下jdbc:mysql://127.0.0.1中的127.0.0.1就属于是IP地址ConnectionconnectionDriverManager.getConnection(jdbc:mysql://127.0.0.1:3308/first_database?characterEncodingutf8serverTimezoneAsia/ShanghaiallowPublicKeyRetrievaltrueuseSSLfalse,root,123456);IP地址作用就是区分网络上的设备原则上是希望每个设备都有唯一的IP地址实际会复杂一些这个具体会在后面网络通信部分博客详细解析铁汁们可以用下面的这个链接查询下自己的IP地址IP跟上网地区是强相关的通过IP大概就能知道在哪个地区但肯定是没法精确定位的查询网站IP地址是用32位二进制来表示的为了方便显示一般把32位IP地址划分成4个部分每个部分8位显示的时候用十进制显示的8位二进制十进制的范围就是0 - 255IP地址就类似于网购时的收货地址例如河南省 洛阳市 洛龙区 河南科技大学2端口号端口号是为了区分设备上的不同应用程序因为设备之间传输数据要搞清楚是哪个程序要接收的在jdbc编程中连接mysql数据库时3308就是博主计算机mysql的端口号IP地址就是收件地址就像快递单凭收件地址不一定能保证送到接收方手中还要有电话号快递员送到附近时打电话联系下接收方这个端口号就和电话号的功能类似保证数据精准的送到接收方手中3协议网络传输数据有三种方式光信号通过光纤传播在光纤中传播激光通过调节光的幅度、相位、偏振来表示0/1电信号通过网线传播通过高低电平表示0/1电平是人为规定的电压区间代表的逻辑状态用来表示 0 或者 1例如3.3V单片机规定2.0V ~ 3.3V为高电平逻辑 10V ~ 0.8V → 低电平逻辑 0电磁波连接WiFi传输信息就是通过电磁波通过调节电磁波的频率、幅度、相位来表示0/1那在传播时要提前制定好一些规定比如怎样表示0怎样表示1例如2.0V ~ 3.3V为表示10V ~ 0.8V表示0这些规定就是协议协议涵盖的内容非常多包括01串里面哪部分是数据哪部分是IP地址等等还是比较复杂的4五元组进行一次通信需要5个信息源IP、源端口、目标IP、目标端口、协议类型这5个信息就称为五元组这个还是可以类比快递来理解发件人地址源IP、发件人电话源端口收件人地址目标IP、收件人电话目标端口走的快递类型例如圆通/顺丰/申通协议类型3分层管理由于网络通信是一个很复杂的过程所以如果只用一个协议来描述这个协议就会特别复杂因此就把网络通信拆分为多层每层有每层的协议数据传输规则每层负责特定的内容每层不需要关心其他层的协议这样做还可以解耦合灵活的对协议进行替换拿电话机类比下分为语言层和通信设备层语言层有汉语协议通信设备层有电话机协议对于通信设备层来说是不关心语言层的协议不管语言层是汉语协议还是英语协议都无所谓通信设备层只需要通过电话机协议传播语音信号即可同时语言层也无需关注通信设备层的协议假如通信设备换成了对讲机采用无线电协议对语言层来说这个语音信号靠什么协议传播是无所谓的只需要确保对方能听懂我的语言即可如下图对于分层比较经典的就是OSI参考模型分成了7层这个分层特别详细但是OSI因为分层过于繁琐以及协议设计复杂原因在实际使用上已经基本上被淘汰了现在主要在教学上使用在实际开发中使用的是TCP/IP模型更加简化对于TCP/IP模型来说很多时候为了教学方便会将底层的网络接口层拆分为物理层和数据链路层拆分成5层的体系结构从下到上依次是物理层、数据链路层、网络层网际层、传输层运输层、应用层这里解析TCP/IP模型也是按照拆分为5层来解析在解析时也会类比快递运输物理层也就是网络通信中依赖的硬件设施例如网线、光纤、天线这些东西和程序员关系不大通信专业的铁汁可能会比较了解这部分内容数据链路层负责两个相邻节点前面画的广域网的图中各局域网和路由器的通信局域网路由器和大路由器的通信都属于两个相邻节点的通信之间的通信通过网线/光纤/无线信号/直接相连两个设备网络层负责两个节点之间的路径规划传输层不关心中间的传输过程只关心传输的起点和终点应用层也就是数据到了应用程序中数据如何处理需要程序员来写代码这个用网购快递的过程来类比就很好理解从应用层开始例如在网上买了一个本子那这个本子买回来怎么用用来记东西或者用来垫桌子这是我们自己决定的卖家和快递公司是不关心这些东西的如何使用就是应用层传输层就相当于是我们和卖家我们关心这个本子是从哪里发过来的来推断物流时间卖家只关心我们的地址要在发货单上打出来网络层就相当于快递公司通过发货地址和收获地址来规划运送路线例如从北京到洛阳那就可以拆分为北京 - 郑州 - 洛阳数据链路层负责相邻两个节点的通信例如从北京到郑州用火车运输从郑州到洛阳用货车运输物理层就相当于是快递运输中公路/铁路这些基础设施对于计算机的主机而言它的操作系统实现了从传输层到物理层的内容也就是TCP/IP五层结构的下四层对于路由器它实现了从网络层到物理层也就是TCP/IP五层模型的下三层对于交换机它实现了从数据链路层到物理层也就是TCP/IP五层模型的下两层在实际情况中路由器和交换机的界限越来越模糊了一些路由器的功能交换机也有交换机的功能路由器也有。就拿5层的TCP/IP结构来看分析下发送信息时这5层是如何运转的假设是在QQ中发送信息用户在聊天对话窗口的打字栏中输入hello并点击发送QQ程序就能获取到这个要发送的“hello字符串把这个”hello“按照一定的协议构造成应用层数据包不同软件构造应用层数据包的协议可能不一样的这个是程序员自己定义的假设QQ的应用层数据包格式为发送者id 接收者id 消息的发送时间 消息的正文假设发送者id是1234接收者id是5678如下图接着通过系统的API函数式接口把这个数据包交给下一层传输层传输层接收到来自应用层的数据包按照传输层的协议构造出传输层数据包传输层的协议主要为TCP和UDP后续博客详细解析假设这里采用的是UDP协议那就在应用层数据包的前面加个UDP报头即可报头中的内容主要是源端口号和目的端口号应用层数据包部分作为UDP的载荷UDP数据包由报头 载荷组成如下图传输层把构造好的传输层数据包调用对应的API交给网络层网络层最主要的协议就是IP协议IP协议会在传输层数据报的基础上加上IP报头如下图接着把数据包传输给数据链路层网络层是总领整个通信的源/目的IP就是起点和终点对于不同的联网方式来说数据链路层的协议是不同的如果是插网线就是以太网 Ethernet协议如果是连接WiFi就是802.11协议像手机的5G网络通信就用到了不只一个协议假设是以太网 Ethernet协议就是在IP数据报的基础上拼接上以太网帧头和帧尾数据链路层只负责相邻节点的数据传输帧头中的内容是源/目的MAC地址作用是在局域网内部寻址找下一跳设备每经过一台设备链路层帧拆除重封装目的 MAC 就会改变数据链路层再把数据包传输给物理层到物理层就把数据包转化为0101这样的二进制数据转换成光信号/电信号/电磁波通过物理介质传输出去发送方这个过程是封装数据接收方就是拆除数据接收方拆除数据过程如下物理层收到光电信号把光信号转换成0101数字信号交给数据链路层数据链路层就拿以太网协议来说就会去掉帧头和帧尾取出载荷进一步交给网路层网络层取出IP报头对IP进行解析把剩下的数据交给传输层传输层取出UDP报头进行解析把剩下的数据交给应用层应用层QQ应用层对数据报进行解析按照约定好的协议读取发送时间内容以及发送方在接收方的QQ弹窗中显示消息显示发送时间发送方发送内容4丢包丢包就是数据在传输过程中丢失了那数据为什么会丢失呢发送方发送数据给接收方时数据会经过中间的很多节点交换机、路由器这些节点作为数据的中转站就类似于快递公司把快递送到下一个中转站到了中转站需要卸货再重新打上标签发往下个中转站或直接发到用户手中这些中间的路由器/交换机是给很多主机提供服务的但是主机使用网络的时间是具有随机性的可能有个时间段中间的某个节点需要传输的数据量特别大超出了设备传输数据速度的上限这时候就会出现丢包的情况在不同情况下对于丢包的处理也不同传输文件时出现了丢包那就要重新传输丢包的数据看直播时出现了丢包画面会卡顿下这时候丢包的数据是不需要重传的因为直播是实时的这2s画面卡顿了后面尽量不丢包就行总不能用户又看了一会了前面丢包的数据重新传过来了让用户再看一遍结语这部分内容可能很多铁汁在学校开设的计算机网络中都已经学习过了属于是最基础的内容但是在408就业面试中都会考到还是比较重要的前面提到了传输层的主要协议就是TCP/UDP协议这两个协议有什么区别分别如何写代码来实现网络编程会在后面博客中进行详细的解析以上就是今天的所有内容啦完结撒花
返回列表