当前位置: 首页 > news >正文

免费网站模板无需注册建手机版网站

免费网站模板无需注册,建手机版网站,青岛北京网站建设,做网站怎样办营业执照目录 应用层重点协议 传输层重点协议 1.UDP协议 (一)UDP协议段格式 (二)UDP的特点 无连接 不可靠传输 面向数据报 全双工 缓冲区 大小受限 (三)基于UDP的应用层协议 (四)面试题 2.TCP协议 (一)TCP协议段格式 (二)TCP的特点 有连接 可靠传输 面向字节流 缓冲…目录 应用层重点协议 传输层重点协议 1.UDP协议 (一)UDP协议段格式 (二)UDP的特点 无连接 不可靠传输 面向数据报 全双工 缓冲区 大小受限 (三)基于UDP的应用层协议 (四)面试题 2.TCP协议  (一)TCP协议段格式 (二)TCP的特点 有连接 可靠传输 面向字节流 缓冲区 全双工 粘包问题 异常情况 (三)基于TCP应用层协议 ​编辑网络层重点协议 IP协议 数据链路层重点协议 面试题 我们知道TCP/IP五层或四层模型包括 应用层传输层网络层数据链路层物理层 那网络传输是怎样具体展开的呢~ 举个例子发送方“封装”接收方要“分用”   下面我们就来学习各个层的重点协议~~  应用层重点协议 传输层重点协议 1.UDP协议 (一)UDP协议段格式 16位UDP长度表示整个数据报(UDP首部UDP数据)的最大长度如果校验和出错就会直接丢弃         (二)UDP的特点 无连接 知道对方的IP号和端口号就能直接进行传输不需要建立连接 不可靠传输 没有任何安全机制发送端发送数据报后如果遇到网络故障该段无法发送过去UDP协议层也不会给应用层返回任何错误信息 面向数据报 应用层发给UDP多长的报文UDP原样发送既不会拆分也不会合并 全双工 UDP的socket既能读也能写 缓冲区 UDP只有接收缓冲区没有发送缓冲区 UDP没有真正意义上的 发送缓冲区。发送的数据会直接交给内核由内核将数据传给网络层协议 进行后续的传输动作 UDP具有接收缓冲区但是这个接收缓冲区不能保证收到的UDP报的顺序和发送UDP报的顺序一 致如果缓冲区满了再到达的UDP数据就会被丢弃 大小受限 UDP协议首部中有一个16位的最大长度。也就是说一个UDP能传输的数据最大长度是64K包含UDP首部。 (三)基于UDP的应用层协议 NFS网络文件系统TFTP简单文件传输协议DHCP动态主机配置协议BOOTP启动协议用于无盘设备启动DNS域名解析协议 当然也包括你自己写UDP程序时自定义的应用层协议。 (四)面试题 1. UDP本身是无连接不可靠面向数据报的协议如果要基于传输层UDP协议来实现一个可靠传 输应该如何设计 2. UDP大小是受限的如果要基于传输层UDP协议传输超过64K的数据应该如何设计  以上两个问题答案类似都可以参考TCP的可靠性机制在应用层实现类似的逻辑 例如 引入序列号保证数据顺序引入确认应答确保对端收到了数据引入超时重传如果隔一段时间没有应答就重发数据……  2.TCP协议  (一)TCP协议段格式 (二)TCP的特点 有连接 在正常情况下TCP要经过三次握手建立连接四次挥手断开连接 那啥叫断开连接呢  A和B把自己存储的连接信息(数据结构)删了连接就是断开了~~ 三次握手 建立连接阶段主要认识两个状态 1.LISTEN 服务器的状态 表示服务器已经准备就绪随时可以跟客户端来建立连接相当于手机开机信号良好随时可以有人来打电话~~ 2.ESTABLISHED 客户端和服务器都有 表示连接建立完成接下来就可以正常通信了相当于电话拨过去对方接通了~~  四次挥手 断开连接阶段主要认识两个状态 1.TIME_WAIT TIME_WAIT表示要保持当前的TCP连接状态不要立即就释放~ 为什么不要连接释放呢 TIME_WAIT如果等待了一段时间后也没收到重传的FIN此时就认为最后的一个ACK没丢于是就彻底的释放连接了~ 2.CLOSE_WAIT 出现在被动发起断开连接的一方 建立连接一定是客户端主动发起请求的断开连接可能是客户端主动发起也可能是服务器主动发起~ CLOSE_WAIT表示等待关闭等待调用close方法关闭socket 有连接和确认应答的区别 可靠传输 确认应答机制 网络后发先至这个现象是客观存在的如何解决这个问题呢 方法很简单给传输的数据和应答报文都进行编号就可以了 TCP将每个字节的数据都进行了编号。即为序列号。 每一个ACK都带有对应的确认序列号意思是告诉发送者我已经收到了哪些数据下一次你从哪里开始发。 超时重传机制 主机A发送数据给B之后可能因为网络拥堵等原因数据无法到达主机B如果主机A在一个特定时间间隔内没有收到B发来的确认应答就会进行重发 如果一直丢包主机A会一直重传吗 答案是不会的~ 但是主机A未收到B发来的确认应答也可能是因为ACK丢失了 由于主机B返回的确认应答因网络堵塞等原因在传输的途中丢失没有到达主机A主机A会等待一段时间若在特定时间间隔始终未能收到确认应答主机A会对此数据进行重发此时主机B将第二次发送已接收数据的确认应答由于主机B已经收到过1~1000的数据当再有重复数据送达时它会放弃~~ 滑动窗口机制 刚才我们讨论了确认应答策略对每一个发送的数据段都要给一个ACK确认应答。收到ACK后再发送 下一个数据段。这样做有一个比较大的缺点就是性能较差。尤其是数据往返的时间较长的时候 既然这样一发一收的方式性能较低那么我们一次发送多条数据就可以大大的提高性能其实是将多 个段的等待时间重叠在一起了 当批量发送了窗口大小的这些数据之后发送方就要等待ACK了 那么啥时候继续往下发送呢发送方不是等待所有的ack到达才继续往下发而是到了一个ack就继续往下发一条... 如上图的例子那么我们等待的ack始终是4条~ 那么如果出现了丢包如何进行重传这里分两种情况讨论。 情况一、数据包丢了 情况二、ack丢了 流量控制机制 这是一种干预发送窗口大小的机制 滑动窗口越大传输效率越高一份时间等待的ack越多 但是窗口也不能无限的大~否则会造成以下的问题 1.完全不等ack可靠性能否保障画上问号 2.窗口越大也会消耗大量的系统资源 3.发送速度太快接收方处理不过来发了也白发 接收方的处理能力就是一个很重要的约束依据 发送方发数据的速度不能超过接收方的处理能力 流量控制要做的工作就是这个根据接收方的处理能力协调发送方的发送效率 那如何衡量接收方的处理能力 其实可以直接看接收方接收缓冲区的剩余大小~ 当窗口大小为0发送方就要暂停发送暂停发送的等待过程中会给B定期发送窗口探测报文这个报文不携带具体的业务数据只是为了触发ack查询窗口大小~~ 延时应答机制 面向字节流 缓冲区 创建一个TCP的socket同时在内核中创建一个 发送缓冲区 和一个 接收缓冲区 前面我们说过~网络上的传输可能后发先至 TCP使用这个接收缓冲区对接收的数据进行重新排序使应用程序read到的数据是保证有序的和发送顺序一致 全双工 既可以读数据也可以写数据。 粘包问题 首先要明确粘包问题中的 包 是指的应用层的数据包。 在TCP的协议头中没有如同UDP一样的 报文长度 这样的字段但是有一个序号这样的字 段。 站在传输层的角度TCP是一个一个报文过来的。按照序号排好序放在缓冲区中。 站在应用层的角度看到的只是一串连续的字节数据。  那么应用程序看到了这么一连串的字节数据就不知道从哪个部分开始到哪个部分是一个 完整的应用层数据包。 那么如何避免粘包问题呢 归根结底就是一句话明确两个包之间的边界。 对于定长的包保证每次都按固定大小读取即可 就从缓冲区从头开始按sizeof依次读取即可 对于变长的包可以在包头的位置约定一个包总长度的字段从而就知道了包的结束位 置 对于变长的包还可以在包和包之间使用明确的分隔符应用层协议是程序猿自己来定 的只要保证分隔符不和正文冲突即可 异常情况 (三)基于TCP应用层协议 HTTPHTTPSSSHTelnetFTPSMTP当然也包括你自己写TCP程序时自定义的应用层协议 网络层重点协议 IP协议 协议头格式如下 4位版本号version指定IP协议的版本对于IPv4来说就是4。 4位头部长度header lengthIP头部的长度是多少个32bit也就是 length * 4 的字节 数。4bit表示最大的数字是15因此IP头部最大长度是60字节。 8位服务类型Type Of Service3位优先权字段已经弃用4位TOS字段和1位保留 字段必须置为0。4位TOS分别表示最小延时最大吞吐量最高可靠性最小成本。 这四者相互冲突只能选择一个。对于ssh/telnet这样的应用程序最小延时比较重要对于 ftp这样的程序最大吞吐量比较重要。 16位总长度total lengthIP数据报整体占多少个字节。 16位标识id唯一的标识主机发送的报文。如果IP报文在数据链路层被分片了那么每 一个片里面的这个id都是相同的。 16位头部校验和使用CRC进行校验来鉴别头部是否损坏。 32位源地址和32位目标地址表示发送端和接收端。 举个例子 我们来想一个问题~如果IP地址不够用了怎么办 1.动态分配IP地址。此时就可以省下一大批IP地址了但是这个方案没有从根本上增加IP地址只是提高了利用率治标不治本~ 2.NAT网络地址转换本质是使用一个IP地址代表一批设备使用端口号区分能够大大提高IP地址的利用率 3.IPv6 (从根本解决IP不够用的问题) 使用16字节表示IP地址 特殊的IP地址 将IP地址中的主机地址全部设为0就成为了网络号代表这个局域网将IP地址中的主机地址全部设为1就成为了广播地址用于给同一个链路中相互连接的所有主机发送数据127.*的IP地址用于本机环回测试通常是127.0.0.1本机环回主要用于本机到本机的网络通信(系统内部为了性能不会走网络的方式传输) 路由选择  数据链路层重点协议 mac地址是6个字节的(比IPv4地址大很多)当前每个设备都有一个唯一的mac地址不是动态分配的而是网卡出厂的时候设置好的 MTU 面试题 关于网络原理这块知识点会有一个常考的面试题 在浏览器输入www.baidu.com并按下回车后到最终页面展示涉及了许多网络原理和技术以下是整个过程的简要步骤 1. DNS解析    - 浏览器首先会将输入的URL解析成IP地址。这个过程称为DNS解析它通过查询域名系统DNS来找到与www.baidu.com相关联的IP地址。 2. 建立TCP连接    - 一旦浏览器知道了目标服务器的IP地址它会尝试与该服务器建立TCP连接。这是通过三次握手过程完成的包括客户端向服务器发送连接请求服务器回复确认然后客户端再次确认。 3. 发起HTTP请求    - 一旦建立了TCP连接浏览器将发起一个HTTP请求以获取与www.baidu.com关联的网页。这个请求包含了要获取的页面信息以及其他相关的HTTP头部信息。 4. 服务器处理请求    - 目标服务器www.baidu.com收到浏览器的请求后会根据请求的内容和服务器上的配置来处理请求。通常服务器会生成响应包括网页内容、状态码和其他HTTP头部信息。 5. 服务器发送HTTP响应    - 一旦服务器处理完请求它会将HTTP响应发送回客户端浏览器。这个响应包括HTTP状态码例如200 OK表示成功以及请求的网页内容。 6. 浏览器渲染页面    - 浏览器接收到HTTP响应后会解析HTML、CSS和JavaScript代码然后渲染页面。这包括将HTML结构转化为可见的网页并加载和执行JavaScript代码以添加交互性和动态内容。 7. 页面展示    - 最终浏览器将完整的网页渲染出来并将其呈现在用户的屏幕上用户可以看到和与网页交互。
http://www.sadfv.cn/news/326753/

相关文章:

  • 如何个网站做优化企业网站推广优化公司
  • 网站改版阿里云怎么做网站301定向网络推广引流是什么意思
  • 网站防站杭州seo技术培训
  • 电商商城网站建设方案模拟建设网站
  • 网站添加提醒郑州中医男科哪个医院好
  • 给客户做网站图片侵权办图网ppt模板免费下载
  • 网页网站开发大概多少钱应用公园制作app软件下载
  • 网站有什么模块公司网站建设有用吗
  • 怎么做网站受众分析eechina电子工程网
  • 微博网站开发平台wordpress页面如何调用文章分类
  • 个人网站设计说明网站改版建设 有哪些内容
  • 如何建立网站建设电脑路由器做网站服务器
  • 道县找人做网站个人网站主页html5
  • 温州市建设安监局网站门户网站建设方案招标文件
  • 网络营销建设网站实训河北网站备案流程
  • 上海网站排名优化中国建筑最新消息
  • 个人网站备案麻烦页面好看的蛋糕网站
  • 哪家做网站的好wordpress 文章模块
  • 怎样做网站的快捷方式江苏建设信息网
  • 苏州手机网站制作wordpress添加自定义导航栏
  • 鲜花网站建设结构布局正规营销型网站建设
  • 网站建设 注意事项用ps如何做网站首页
  • 5118站长工具箱网店怎么注册开网店
  • 传媒大学附近网站建设公司公众号平台注册
  • 网站建设海外网站需要收集什么建站资源
  • 网站怎么做别名查询战网
  • 做花酒的网站淘宝客代理网站怎么做
  • 网站镜像怎么做中国十大关键词
  • 化学产品在哪个网站做推广最好天津房产网
  • 安防网站模板教人做窗帘的视频网站