1.网络发展史国内2000年前后才真正进入网络时代2000年之前网络是稀罕物虽然有些家庭已经有电脑了但是没有网。2000年之后网络逐渐多了起来网吧联机玩游戏只能在同一个机房/网吧局域网局域网把两个设备连到同一个路由器上就是在同一个局域网中了广域网把很多的局域网连到一起全世界最大的因特网The Internet2007年乔布斯发布苹果手机初代IPhone标志着移动互联网时代拉开了序幕当时诺基亚这类传统手机仍然是主流差不多2011/2012年左右真身IPhone4 出现是的诺基亚等传统手机厂商一夜就G了包括华为、小米、三星等一系列厂商也把安卓推上风口浪尖单机时代 》局域网时代 》广域网时代 》移动互联网时代 》组件网络的核心装备路由器交换机交换机可以视为“对路由器的接口进行拓展”家用路由器一般就是可以接4根网线交换机不会进行组局域网的功能可以把路由器的接口进行拓展某个电脑连接到交换机上等价于链接到路由器上交换机接口不够用可以接更多的交换机引入更多的接口路由器接的东西太多了就处理不过来了家用路由器一般接20个装备差不多就是极限了但是企业级的路由器带动几百个设备都是没有什么压力的2.网络通信基础IP地址jdbc:mysql://127.0.0.1:3306/java113?characterEncodingutf8上述的127.0.0.1就是IP地址IP地址可以标识网络一台设备所在的位置端口号一台主机上可能有很多的程序同时使用网络端口号区分一台主机上的多个应用程序认识协议网络协议通信双方对于发送/接受 数据可是的约定我的数据怎么发你收到就得怎么解析网路通信中协议非常关键多个主机设备都能认同并遵守同一套协议此时通信才是有意义的五元组源IP源端口、目的IP、目的端口、协议类型西游记的唐僧贫僧源端口自东土大唐源IP而来到西方目的IP拜佛目的端口求经去协议分层网络通信非常复杂如果我们设计一个协议完成通信中方方面面的问题势必会使这个协议非常复杂非常庞大把一个大的协议拆成若干个小的功能单一的协议拆完之后小的协议太多了甚至有几百上千个所以要把这些小的协议归类分层只有相邻两层协议之间可以进行交互上层协议可以调用下层协议下层协议可以给上层提供服务协议之间的交互不能跨层进行封装1.上层协议不需要了解下层协议的细节2.分层之后灵活的替换某一层对于整体工作过程影响很小真正的互联网怎么分层OSI其层互联网模型OSI七层模型既复杂也不实用所以OSI七层模型没有落地实现实际组件网络的时候只是以OSI七层模型设计中的部分分层也即是一下TCP/IP五层或四层模型来实现RCP/IP五层或四层模型TCP/IP是一组协议的代名词还包括许多协议组成了TCP/IP簇TCP/IP通信协议采用了5层级结构每一层都呼叫它的下一级锁提供的网络来完成自己的需求应用层负责应⽤程序间沟通负责使用传输层负责两台主机之间的数据传输两个任意设备之间的通信不考虑中间过程只考虑起点和终点网络层负责地址管理和路径选择两个任意设备之间如何进行通信这两个设备之间可能隔着很多的交换机和路由器数据链路层负责设备之间的数据帧的传送和识别完成两个相邻的设备之间如何通信的通过网线把地哦啊闹连接到路由器/交换机上物理层负责光/电信号的传递方式网线/光纤/wifi物理层的协议就是约定这些硬件设施要符合的要求是怎么样的叫做四层是将数据链路层和物理层硬件设备直接相关看做一个整体经典面试题主机 工作过程涉及到 从物理层 》应用层通过应用程序满足网络通信的要求路由器 工作涉及到 从物理层 》网络层 组建局域网进行网络数据包的转发交换机 工作涉及到 从物理层 》数据链路层对路由器接口的扩展不需要考虑组网的问题真实情况可能不太一样真实的路由器交换机功能更丰富更强大现代的交换机很多都有路由器的功能路由器也可以开启特殊的模式就可以起到“交换机”的效果封装和分用网路数据通信的基本流程封装通过qq发送hello1.应用程序获取到用户输入构造一个应用层的数据包这个应用层数据包就会遵守应用层协议往往是开发这个程序的程序员自己定义的此处假设这样的协议格式约定格式发送者的qq号接受者的qq号消息时间消息正文示例的数据本质上就是“字符串拼接”2.应用程序调用传输层提供的接口socket api把数据交给传输层传输层拿到数据之后构造出“传输层数据包”传输层的协议主要有两个TCP、UDPTCP数据包TCP报头headerTCP载荷payloadTCP报头 》TCP功能相关的属性属性很多当前阶段只需知道这里包含了源端口和目的端口3.传输层构造好数据之后继续调用网络层的api把传输层的数据包交给网络层网络层继续进行处理网络层最主要的协议是IP协议IP协议继续对上述数据包进行加工 》拼上IP报头IP数据包IP报头IP荷载这个传输层的数据包IP报头的信息页很多源IP和目的IP协议类型其实不只是一份数据有很多层其中IP报头会记录当前放入传输层使用的是哪个协议传输层报头中夜壶已记录应用层使用哪个协议准确来说是数据交给哪个应用程序数据链路层报头中也会记录网络层使用哪个协议4.IP协议继续调用数据链路的api把IP数据包交给数据链路层数据链路层中核心协议“以太网”以太网这个协议也会在网络层数据包的基础上进一步加工以太网的数据帧帧头载荷帧尾目前为止数据还在当前手机上转悠没有出门谈到网络传输的“基本数据单位”涉及到多个术语网络数据报包/帧/报/段段segmentTCP用的报Datagram UDP用的包packetIP用的zhenframe数据链路层以太网数据帧5.以太网继续把这样的数据交给硬件设备网卡网卡会把上述二进制数据最终以 光信号/电信号/电磁波信号 传播出去数据终于出门了从上层到下层数据都要进一步加工添加报头封装和面向对象的封装不一样接受方法是从下到上一次解析分用封装是逆向过程分用数据达到接受方的主机逐层进行解析1.数据到达接受方的网卡光电信号网卡把光电信号还原成二进制010101把二进制数据交给上层的数据链路层物理层数据信号是咋来的和数据链路层都是直接相关的2.数据链路按照以太网协议进行解析把报头和报尾取出来剩下的载荷往上传递给网络层以太网的帧头中有专门的属性描述网络层使用哪些协议3.网络层拿到这个数据之后按照IP协议进行解析再把载荷交给传输层IP报头中也有专门的属性描述了传输层使用哪个协议4.传输层拿到数据之后也是类似按照TCP协议来解析没取出载荷交给引用层传输层报头中通过目的端口号告知我们数据交给哪个应用程序5.qq应用程序解析应用程数据拿到关键信息展示到界面上给出提示不同的应用程序自然使用不同的应用层协议来解析虽然上述过程听起来挺复杂对于计算机来说是极快的过程传输的过程中也会涉及到封装分用交换机只需要分装到数据链路层即可二层转发主机的数据 》交换机 交换机收到之后物理层解析数据链路解析重新构造出新的以太网数据帧交给下一步工作主机的数据 》路由器 路由器收到之后物理层、数据链路层、网络层解析重新构造出新的网络数据包构造出以太网数据帧构造出二进制数据三层转发是否有设备工作在传输层比如防火墙