谈谈对网站建设的认识网页制作培训多少钱一天
- 作者: 五速梦信息网
- 时间: 2026年03月21日 08:23
当前位置: 首页 > news >正文
谈谈对网站建设的认识,网页制作培训多少钱一天,wordpress自定义文章添加标签,网页项目描述怎么写一、图解网络 问大家#xff0c;为什么要有TCP/Ip网络模型#xff1f; 对于同一台设备上的进程通信#xff0c;有很多种方式#xff0c;比如有管道、消息队列、共享内存、信号等方式#xff0c;对于不同设备上的进程通信#xff0c;就需要有网络通信#xff0c;而设备是…一、图解网络 问大家为什么要有TCP/Ip网络模型 对于同一台设备上的进程通信有很多种方式比如有管道、消息队列、共享内存、信号等方式对于不同设备上的进程通信就需要有网络通信而设备是多样性的所以要兼容多种多样的设备就写上出了一套通用的网络协议。 这个网络协议是分层的每一层都有各自的作用和指责。 应用层 最上层的也是我们能直接接触到的就是应用层我们电脑或手机使用的应用软件都是在应用层实现。那么当两个不同设备的应用需要通信的时候应用就把应用数据传给下一层也就是传输层。 所以应用层只需要专注于为用户提供应用功能比如HTTP、FTP、Telnet、DNS、SMTP等。应用测过是不用去关心数据是如何传输的就类似于我们寄快递的时候只需要把包裹交给快递员由他负责运输快递我们不需要关心快递是如何被运输的。 而且应用层是工作在操作系统的用户态传输层及以下则工作在内核态。 传输层 应用层的数据包会传给传输层传输层是为应用层提供网络支持的。 在传输层会有两个传输协议分别是TCP和UDP。 TCP的全称叫传输控制协议Transmission Control Protocol),大部分应用使用的正式TCP传输层协议比如HTTP应用层协议。TCP相比UDP多了很多特性比如流量控制、超时重传、拥塞控制等这些都是为了保证数据包能可靠的传输给对方。 UDP相对来说就很简单简单到只负责发送数据包不保证数据包是否能抵达对方但它实时性相对更好传输效率也高。当然UDP也可以实现可靠传输把TCP的特性在应用层上实现就可以不过要实现一个商用的可靠UDP传输协议也不是一件简单的事情。 应用需要传输的数据可能会非常大如果直接传输就不好控制因此当传输层的数据包大小超过MSSTCP最大报文长度就要将数据包分快这样即使中途有一个分块丢失或损坏了只需要重新发送这一分块而不用重新发送整个数据包。在TCP协议中我们把每个粉快成为一个TCP段TCP Segment。 当设备作为接收方时传输层则要负责把数据包传给应用但是一台设备上可能会有很多应用在接收或传输数据因此需要用一个编号将应用区分开来这个编号就是端口。 比如80端口通常时web服务器用的22端口通常是远程登录服务器用的。而对于浏览器客户端中的每个标签栏都是一个独立的进程操作系统会为这些进程分配临时的端口号。 由于传输层的报文中会携带端口号因此接收方可以识别出该报文是发送给哪个应用。 网络层 传输层可能大家刚接触的时候会认为它负责将数据从一个设备传输到另一个设备事实上它并不负责。 实际场景中的网络环节是错综复杂的中间有各种各样的分叉路口如果一个设备的数据的数据要传输给另一个设备就需要在各种各样的路径和节点进行选择而传输层的设计理念是简单、高效、专注如果传输层还负责这一块功能就有点违背设计原则了。 也就是说我们不希望传输层协议处理太多的事情只需要服务好应用即可让其作为应用见数据传输的媒介帮助实现到应用的通信二十几的传输功能就交给下一层网络层internet layer). 网络层最常使用的是IP协议internet Protocol),IP 协议将会将传输层的报文作为数据部分再加上IP报头组装成IP报文如果IP报文大小超过MTU以太网中一般为1500字节就会再次进行分片得到一个即将发送到网络的IP报文。 网络层负责将数据从一个设备传输到另一个设备世界上那么设备又该如何找到对方呢因此网络层需要有区分设备的编号。 我们一般用IP地址给设备进行编号对于IPv4协议IP地址共32位分成了四段比如192.168.100.1每段是8位。只有一个单纯的IP地址虽然做到了区分设备但是寻址起来就特别麻烦全世界那么多台设备难道一个一个去匹配这显然不科学。 因此需要将IP地址分成两种意义 一个是网络号负责标识该IP地址是属于哪个子网的 一个主机号负责标识同一子网下的不同主机 怎么分的呢这需要配合子网掩码才能算出IP地址的网络号和主机号。 举个例子比如10.100.122.0/24后面的/24表示就是255.255.255.0子网掩码255.255.255.0二进制是「11111111-11111111-11111111-00000000」 那么在寻址的过程中先匹配到相同的网络号表示要找到同一个子网才会去找对应的主机。 除了寻址能力IP协议还有另一个重要的能力就是路由。实际场景中两台设备并不是用一条网线连起来的而是通过很多网关、路由器、交换机等众多网络设备连接起来的那么就会形成很多网络的路径因此当数据包到达一个网络节点就需要通过路由算法决定下一步走那条路径。 路由器寻址工作中就是要找到目标地址的子网找到后进而把数据包转发给对应的网络内。 所以IP协议的寻址作用是告诉我们去往下一个目的地该朝哪个方向走路由则是根据下一个目的地选择路径。寻址更想在导航路由更像在操作方向盘。 网络接口层 生成了IP头部后接下来要交给网络接口层Link Layer在IP头部的前面加上MAC头部并封装成数据帧Data frame)发送到网络上。 应用层 应用层 — 应用数据 传输层 传输层 — TCP头应用数据 网络层 网络层 — IP头TCP头应用数据 网络接口层 网络接口层 —-帧头IP头TCP头应用数据帧尾 以太网 IP头部中的接收方IP地址表示网络包的目的地通过这个地址我们就可以判断要将包发到哪里但在以太网的世界中这个思路是行不通的。 什么是以太网呢电脑上的以太网接口Wi-Fi接口以太网交换机、路由器上的千兆万兆以太网接口还有网线他们都是以太网的组成部分。以太网就是一种在局域网内把附近的设备连接起来是他们之间可以进行通讯的技术。 以太网在判断网络包目的地址时和Ip的方式不同因此必须采用相匹配的方式才能在以太网中将包发往目的地而MAC头部就是干这个用的所以在以太网进行通讯要用到MAC地址。 MAC头部是以太网使用的头部它包含了接收方和发送方的MAC地址等信息我们可以通过ARP协议获取对方的MAC地址。 所以说网络接口层主要为网络层提供链路级别传输的服务负责在以太网、Wi-Fi这样的底层网络上发送原始数据包工作在网卡这个层次使用MAC地址来标识网络上的设备。 总结 综上所述TCP/IP网络通常是由上到下分成4层分别是应用层传输层网络层和网络接口层。 网络接口层的传输单位是帧Frame),IP层的传输单位是包packetTCP层的传输单位是段segment),HTTP的传输单位则是消息或报文message。但这些名词并没有什么本质区分可以统称为数据包。 2.2键入网址到网页显示期间发生了什么 孤单小弟——HTTP 浏览器第一步要做的就是解析URL网址 首先浏览器做的第一步工作就是要对URL进行解析从而生成发送给Web服务器的请求信息。 URL元素组成 http://Web服务器/目录名/…..文件名 URL开头表示访问数据的协议、//后面的字符串表示服务器的名称、/后面表示数据文件的路径名可省略 长长的URL网址实际上是请求服务器里的文件资源Web服务器后面是数据的路径名。 当没有路径名是就代表访问根目录下事先设置的默认文件也就是/index.html或者/default.html这些文件就不会发生混乱了。 生产HTTP请求信息 对URL进行解析之后浏览器确定了web服务器和文件名接下来就是根据这些信息来生成HTTP请求信息了。 a .请求报文 b.响应报文 一个孤单单的HTTP数据包表示“我这么一个小小的数据包没亲没友直接发到浩瀚的网络谁会知道我呢谁能载我一程呢谁能保护我呢我的目的地在哪呢”。充各种疑问的它没有停滞不前毅然踏上了征途 真是地址查询——DNS 通过浏览器解析URL并生成HTTP消息后需要委托操作系统叫消息发送给web服务器。 但在发送之前还有一项工作需要完成那就是查询服务器域名对应的IP地址因为委托操作系统发送消息时必须提供通信对象的IP地址。 所以有一种服务器就专门保存了web服务器域名与Ip的对应关系他就是DNS服务器。 域名中的层级关系 DNS中的域名都是用句点来分隔的比如www.server.com,这里的句点代表了不同层次之间的界限。在域名中越靠右的层级越高。 实际上域名最后还有一个点比如www.server.com.,这个最后一个点代表根域名。 也就是.根域是在最顶层它下一层就是.com顶级域在下面是server.com。 所以域名的层级关系类似一个树状结构 根DNS服务器(.)顶级域DNS服务器(.com)权威DNS服务器(server.com) 根域的DNS服务器信息保存在互联网中所有的所得DNS服务器中。 这样一来任何DANS服务器就可以找到任意一台DNS服务器就可以通过它找到根域DNS服务器然后再一路顺藤摸瓜找到位于下层的某台目标DNS服务器。 域名解析的工作流程 客户端首先会发出一个DNS请求问www.server.com的IP是啥并发给本地DNS服务器也就是客户端的TCP/IP设置中填写的DNS服务器地址。本地域名服务器收到客户端的请求后如果缓存里的表格能找到www.server.com的则它直接返回IP地址。如果没有本地DNS会去问它的根域名服务器“老大能告诉我www.server.com的I的IP地址吗”根域名服务器是最高层次的它不直接用于域名解析但能指明一条道路。 根DNS收到来自本地NDS的请求后发现后置是.com说“www.server.com的I这个域名归.com区域管理“我给你.com顶级域名服务器地址给你你去问他吧。“本地DNS收到顶级域名服务器的地址后发起请求问”老二你能告诉我www.server.com的I的IP地址吗”顶级域名服务器说“我给你负责www.server.com的I区域的权威DNS服务器的地址你去问他应该能闻到”。本地DNS于是转向问权威DNS服务器“老三www.server.com的I对应的IP是啥呀”server.com的权威DNS服务器它是域名解析结果的原出处。为啥叫权威呢就是我的域名我做主。权威DNS服务器查询后将对应的Ip地址X.X.X.X告诉本地DNS。本地DNS再将IP地址返回客户端客户端和目标建立连接。 URL解析-生成发送给web服务器的http请求信息-web服务器响应报文-Http消息发送给web服务器-客户端发出DNS请求-本地DNS服务器-根DNS服务器-顶级域名服务器-权威DNS服务器查询服务器域名对应的IP地址并告诉本地DNS-本地DNS将IP返回客户端-客户端和目标建立连接-把http的传输工作交给系统的协议栈–网络应用程序浏览器、web服务器socket库–操作系统–协议栈TCP需要连接、UDP不需要连接–操作系统–协议栈:IP(传送网络包、确定路由ICMP、ARP协议–驱动程序–网卡驱动程序控制网卡–硬件–物理硬件网卡 可靠传输——TCP http是基于TCP协议传输的。 源端口号、目的端口号序号确认号状态为SYN、ACK、RST、FIN窗口大小。 tcp是面向连接的因而双方要维护连接的状态这些带状态为的包的发送回应起双方的状态变更 TC P要做流量控制拥塞控制 TCP传输数据前要进行三次握手建立连接 一开始客户端和服务器都处于close状态先是服务器主动监听某个端口处于listen状态然后客户端主动发起SYN发起一个连接然后处于syn-sent状态服务器收到发起的连接返回SYN并且ACK确认客户端的SYN之后处于SYN- RCVD状态客户端收到服务器发送的SYN和AC K之后发送对SYN确认的ACK之后处于ESTABLISHE D状态因为它已发一收成功了。服务端收到ACK的ACK后处于ESTABLISHED状态因为它也一发一收成功了。 所以三次握手的目的是保证双方都有发送和接收的能力。 TCP分割数据 MTU MSS Linux系统是如何发网络包的 网络模型 为了似的多种设备能通过网络相互通信和为了解决各种不同设备在网络互联网中兼容性问题国际标准化组织制定了开放式系统互联通信参考模型open system interconnection reference model),也就是OSI网络模型该模型主要有7层分别是应用测过、表示测过、会话层、出啊数层、网络层、数据链路层以及物理层。 每一层负责的职能都不同如下 应用层负责给应用程序提供统一的接口表示层负责把数据转换成兼容另一个系统能识别的格式会话层负责建立、管理和终止表示层实体之间的通信会话。传输层负责端到端的数据传输网络层负责数据的路由、转发、分片数据链路层负责数据的封帧和差错检测物理层负责在物理网络中传输数据帧 常见、实用的是四层模型、即TCP/IP网络模型Linux系统正式按照这套网络模型来实现网络协议栈的。 应用层负责向用户提供一组应用程序比如HTTP、DNSFTP等。 传输层负责端到端的通信比如TCP、UDP等 网络层负责网络包的封装、分片、路由、转发比如IP、ICMP等 网络接口层负责网络包在物理网络中的传输比如网络包的封帧、MAC寻址、差错检测以及通过网卡传输网络帧等。 OSI参考模式的应用层、表示层、会话层相当于TCP/IP模型的应用层OSI参考模式的数据链路层、物理层相当于TCP/IP模型的网络接口层。 Linux网络协议栈 物理链路并不能传输任意大小的数据包所以在以太网中规定了最大传输单元MTU是1500字节也就是规定了单次传输的最大IP包大小。 当网络包超过MTU大小就会在网络层分片以确保分片后的IP不会超过MTU大小如果MTU越小需要的分包就越多那么网络吞吐能力就越差如果MTU越大需要的分包就越好那么网络吞吐能力就越好。 Linux网络协议帧类似于TCP/IP的四层结构 应用程序 内核 系统调用 LVS Socket TCP UDP IP ICMP ARP MAC 网卡驱动个程序 网卡驱动程序 网卡 硬件 网卡 Linux接收网络包的流程 网卡是计算机里的一个硬件专门负责接收和发送网络包当网卡接收到一个网络包后会通过DMA技术将网络包写入到指定的内存地址也就是写入到Ring Buffer这是一个环形缓冲区接着就会告诉操作系统这个网络包已经到达。 那应该怎么告诉操作系统这个网络包已经到达了呢 最简单的一种方式就是处罚中断也就是没当网卡收到一个网络包就出发一个中断告诉操作系统。 但是网络包很多频繁的触发中断会影响其他任务进程从而影响系统的整体效率。 所以为了解决频繁中断带来的性能开销Linux内核在2.6版本中引入了NAPI机制它是混合中断轮询的方式来接受网络包它的核心概念是采用中断唤醒数据接收服务陈故乡然后poll的方法来轮训数据。 因此当有网络包到达时会通过DMA技术将网络包写入指定的内存地址接着网卡向CPU发起硬件中断当CPU收到硬件中断请求后根据中断表调用已经注册的中断处理函数。 硬件中断处理函数会做如下的事情 需要先暂时屏蔽中断表示已经知道内存中有数据了告诉网卡下次再收到数据包直接写内存就可以了不要再通知CPU了这样可以提高效率避免CPU不停的被中断。 接着发起软中断然后回复刚才屏蔽的中断。 硬件中断处理函数做的事情很少主要耗时的工作都交给软中断处理了。 软中断的处理 内核中的ksoftirqd线程专门负责软中断的处理当ksoftirqd内核线程收到软中断后就会来轮训处理数据。 ksofitirqd线程会从ring buffer 中获取一个数据帧用sk_buff表示从而可以作为一个网络包交给网络协议栈进行逐个层处理。 网络协议栈 首先会进入到网络接口层在这一层灰检查报文的合法性如果不合法则丢弃合法则会找出该网络包的上层协议的类型比如是IPv4还是IPv6接着再去掉帧头帧尾然后交给网络层。 到了网络层则取出IP包判断网络包下一步的走向比如是交给上层处理还是转发出去。当确认这个网络包要发送给本机后就会从IP头里看上一层协议的类型是TCP还是UDP接着去掉IP头然后交给传输层。 传输层去处TCP头或UDP头根据四元组“源IP、源端口、目的IP、目的端口”作为标识找到对应的Socket并把数据放到Socket接口的缓冲区。最后应用层程序调用Socket接口将内核的Socket接收缓冲区的数据拷贝到应用层的缓冲区然后唤醒用户进程。 Linux发送网络包的流程 发送网络包正好和上面接收网络包的流程相反。 首先应用程序会带哦用socket发送数据包的接口由于这个是系统调用所以会从用户态陷入内核态的socket层内核会申请一个内核态的sk_buff内存将用户发发送的数据拷贝到sk_buff内存并将其加入到发送缓冲区。接下来网络协议栈从socket发送欢送曲中取出sk_buff,并按照TCP/IP协议从上到下逐层处理。如果使用的是TCP传输协议发送数据那么先拷贝一个新的sk_buff副本这是因为sk_buff后续在调用网络层最后被到达网卡发送网卡发送完成后这个sk_buff会被释放掉。而TCP协议是支持丢失重传的在收到对方的ACK前这个sk_buff不能删除。所以内核的做法就是每次调用网卡发送的时候实际上传出去的是sk_buff的一个拷贝等收到AC看在真正删除。你可能会好奇为什么全部数据包只用一个结构体来描述呢协议栈采用的是分层结构上层向下层传递数据时需要增加包头下层向上层传输数据时又需要去掉包头如果每一层都用一个结构体那在层之间传递数据的时候就要多次拷贝这将大大降低CPU效率。于是为了在层级之间传递数据时不发生拷贝只用sk_buff一个结构体来描述所有的网络包那他是如何做到的呢是通过调整sk_buffa中的data指针比如 当接首报文时从过协议栈层层往上传送数据包通过增加skb-data的值来住不剥离协议首部。 当要发送报文时创建sk_buff结构体数据缓存区的头部预留足够的空间用来填充个层首部在经过下层协议时通过减少skb-data的值来增加协议首部。 至此传输层的工作也就都玩好吃呢过了。然后交给网络层在网络层里会做这些工作选取路由确认下一跳IP、填充IP头、netfiter过滤对超过MTU大小的数据包进行分片。处理完这些工作后会交给网络接口层处理。网络接口层会通过ARP协议获得下一跳的MAC地址然后对sk_buff填充帧头和帧尾接着讲sk_buff放到网卡的发送队列中。这一些工作准备好后会触发软中断告诉网卡驱动程序这里有新的网络包需要发送驱动程序会从发送队列中读取sk_buff将这个sk_buff挂到ring buffer中接着讲sk_buff数据映射到网卡可访问的内存DMA区域最后触发真实的发送。 当数据发送完成以后其实工作并没有结束因为内存还没有清理。当返送玩好吃呢过的时候网卡设备会触发一个硬中断来释放内存主要是释放sk_buff内存和清理ringbuffer内存。 最后当收到这个TCP报文的ACK应答时传输层就会释放原始的sk_buff. 别担心这只是每个人都会有的想法而已以一种平和的心态去看待你不能理解的事情根本改变不了什么。原来我真的故意的话键盘也会敲的很响所以那些人都是没良心的你不必去理会他。
相关文章
-
泰州专业网站制作公司php采集wordpress文章
泰州专业网站制作公司php采集wordpress文章
- 技术栈
- 2026年03月21日
-
泰州网站制作网站建设
泰州网站制作网站建设
- 技术栈
- 2026年03月21日
-
泰州网站制作企业做网站的人搞鬼少首页文件
泰州网站制作企业做网站的人搞鬼少首页文件
- 技术栈
- 2026年03月21日
-
谈谈网站建设的主要内容河北品牌网站建设
谈谈网站建设的主要内容河北品牌网站建设
- 技术栈
- 2026年03月21日
-
谈谈网站建设会有哪些问题网站做代理服务器
谈谈网站建设会有哪些问题网站做代理服务器
- 技术栈
- 2026年03月21日
-
汤臣倍健网站建设方案海南学校网站建设
汤臣倍健网站建设方案海南学校网站建设
- 技术栈
- 2026年03月21日

