计算机网络理论基础

OSI与TCP/IP各层的结构、功能及协议

OSI模型
物理层

机械、电子、定时接口通信信道上的原始比特流传输。

链路层

物理寻址,将原始比特流转变成逻辑传输路线。

  • 隧道协议
  • ARP/RARP(地址解析协议(逆向))
网络层

控制子网的运行,如逻辑编址、分组传输、路由选择。

  • 路由协议
  • 安全协议 AH、ESP
  • IP/IPV6协议
  • ICMP互联网控制信息协议、IGMP互联网组管理协议
传输层

接收上层数据,必要时将数据分割并交给网络层,且保证这些数据段有效达到对端。

  • TCP传输控制协议
  • UDP用户数据报协议
会话层

不同机器上的用户之间建立并管理会话。

  • 安全协议 SSL、TSL
  • 目录访问协议
  • RPC远程过程调用协议
表示层

信息的语法语义以它们的关联,如加密解密、转换翻译、压缩解压。

  • LPP轻量级表示协议
  • NBSSN NetBIOS会话服务协议
  • XDP 外部数据表示协议
应用层

各种应用程序协议。

  • HTTP 超文本传输协议
  • FTP文件传输协议
  • SMTP简单邮件传输协议
  • TELNET TCP/IP中断仿真协议
  • 使用TCP和UDP的应用层服务协议

TCP和UDP的区别

TCP协议

面向连接的、可靠的、基于字节流的传输层协议。客户与服务器交换数据之前,必需先在双方间建立一个TCP连接。TCP提供超时重发,丢弃重复数据,检验数据,流量控制等功能,保证数据能从一段传到另一端。
TCP协议由TCP首部和数据段两部分组成。
TCP首部:源端口和目标端口、序号和确认序号、首部长度、标志位、窗口大小、校验和、紧急指针、任选字段。

UDP协议

面向数据报的传输层协议。UDP不提供可靠性,只把应用程序传给IP层的数据报发送出去,但是并不保证它们是否能够到达目的地。由于UDP并不建立连接,且没有超时重传等机制,故而传输速度很快。

TCP与UDP的区别
  • 基于连接与无连接
  • 对系统资源的要求(TCP较多,UDP少)
  • UDP程序结构较为简单
  • 流模式与数据报模式
  • 对数据,TCP安全但慢、UDP不安全但快。

TCP三次握手四次挥手

TCP连接词

  • SYN建立连接
  • FIN关闭连接
  • ACK响应
  • PSH数据传输
  • RST连接重置

TCP状态

  • CLOSED:关闭状态,初始时的状态,两端都一样。
  • 连接STEN:监听状态,服务器开始监听。
  • SYN_SENT:客户端发送SYN报文的状态。
  • SYN_RCVD:服务端收到客户端发送的SYN报文。
  • ESTABLISHED:连接建立成功。
  • FIN_WAIT_1:主动关闭连接。
  • FIN_WAIT_2:被动方同意关闭连接。
  • TIME_WAIT:收到对方FIN报文并发送ACK报文。
  • CLOSING:双方同时关闭连接。
  • CLOSE_WAIT:被动方等待关闭。
  • LAST_ACK:被动方发送FIN报文。
三次握手

第一次握手:建立连接。客户端发送连接请求报文,将SYN=1,Seq=x,然后客户端进入SYN_SENT状态。

第二次握手:服务器收到SYN报文。服务端收到客户端发送的SYN报文段后,对该报文段进行确认,ACK=x+1;同时自身发出SYN请求信息,SYN=1,Seq=y;服务器将上述信息组合位SYN+ACK报文段一并发送给客户端,服务端进入SYN_RECV状态。

第三次握手:客户端收到服务端的SYN+ACK报文段。将ACK=y+1,向服务段发送ACK报文,这个报文段发送完毕后,客户端和服务端都进入ESTABLISHED状态,完成TCP三次握手。

防止已失效的连接请求报文段突然又传送到了服务段,因而产生错误。服务器段的资源也不会因为一直等待而浪费。

四次分手

当数据传输完毕要断开TCP时,要经历四次分手。发起者客户端与服务端均可。

第一次分手:主机1,将Seq和ACK根据进行设置,向主机2发送一个FIN报文段,此时主机1进入FIN_WAIT_1状态,代表数据传输结束。

第二次分手:主机2收到主机1发送的FIN报文段,向主机1返回ACK=Seq+1报文段,主机1进入FIN_WAIT_2状态。即代表主机2同意关闭连接。

第三次分手:主机2向主机1发送FIN报文段,请求关闭连接,主机2进入LAST_ACK状态。

第四次分手:主机1收到FIN报文段后,向主机2发送ACK报文段,主机1进入TIME_WAIT状态;主机2收到此时的ACK报文段就关闭连接。此时主机1等待2MSL后依然没有回应,则主机1也关闭连接。

TIME_WAIT:可靠的实现TCP全双工连接的中止,防止最终ACK丢失、使得旧的重复信息在网络中消逝。

TCP流量控制与拥塞控制

流量控制

控制发送方的数据发送频率,保证接收方来得及接收。发送方的发送窗口不能超过接收方给出的接收窗口的值。通过点对点、端对端的控制。

接收方若没有缓存足够使用,就会发送零窗口大小的报文,此时发送放将发送窗口设置为0,停止发送数据。之后接收方有足够的缓存,发送了非零窗口大小的报文,但是这个报文在中途丢失的,那么发送方的发送窗口就一直为零导致死锁。

为了解决这个问题,TCP为每一个连接设置一个持续计时器(persistence timer)。只要TCP的一方收到对方的零窗口通知,就启动该计时器,周期性的发送一个零窗口探测报文段。对方就在确认这个报文的时候给出现在的窗口大小(注意:TCP规定,即使设置为零窗口,也必须接收以下几种报文段:零窗口探测报文段、确认报文段和携带紧急数据的报文段)。

TCP拥塞控制

造成网络拥塞的因素有很多。缓存问题,链路传输速度问题等等都有可能造成。
拥塞控制就是防止过多数据注入到网络中,可以使路由器或链路不发生过载。拥塞控制的前提是,网络能够承受现有的负荷,这是一个全局性的工作,涉及所有主机、路由以及降低网络传输性能的其他因素。

慢开始

主机发送数据时,由小到大逐渐增大每次发送的数据量。连接开始时,CWND(拥塞窗口)初始化为1个最大报文段(MSS)大小,发送端按照拥塞窗口发送数据,每当一个报文被确认时,CWND增加一个MSS。这样CWND的值随RTT(网络往返时间)指数增长。如果带宽为W,那么RTT*log2W的时间就会沾满带宽。

拥塞避免

慢启动的拥塞窗口增长极快,为了最大利用带宽,窗口不能无限制增长。因此TCP使用了慢启动门限(一般ssthresh=65535字节)变量,当CWND超过此值后,结束慢启动进入拥塞避免阶段。进入该阶段后,CWND每次只增加1,开始随着RTT线性增加,慢慢调整到网络的最佳值。当TCP的报文丢失并重传后,就认为发送了拥塞.

  1. ssthresh降低为CWND的一半
  2. CWND重新设为1
  3. 重新进入慢启动过程
快速重传

当TCP连续收到三个相同的ACK时,表示对方的数据包丢失或乱序了,此时进行快速重传。

  1. ssthresh降为CWND的一半
  2. CWND设为ssthresh+3(即之前CWND的一半)
  3. 进入快速恢复阶段

加三是因为收到3个重复的ACK,表明有3个“老”的数据包离开了网络。

快速恢复

快速恢复算法

  1. 完成快速重传的步骤
  2. 再次收到ACK时,拥塞窗口增加1
  3. 收到该窗口内所有数据包的ACK报文段后退出快速恢复过程,将CWND设置为触发快速重传时的 ssthresh 值。
  4. 进入拥塞避免阶段。

TCP滑动窗口与其协议

TCP滑动窗口, TCP 的发送方和接收方都会维护一个数据帧的序列,这就是窗口。在建立连接时,发送方和接收方都会向对方通知自己的窗口大小(发送窗口不得大于接收窗口)。发送方发送数据之后,接收方返回 ACK 报文,发送方收到 ACK 报文后,其窗口右边缘向右扩展,左边向右收缩,扩展的大小等于 ACK 报文对应的数据帧。此时窗口就向前“滑动”了。

滑动窗口协议
停止等待ARQ协议
  1. 发送窗口和接收窗口都等于1
  2. 发送端发送数据等待接收端回复ACK,并停止发送新的数据包,开启计时器。
  3. 计时器超时之前收到ACK则正常发送下一个数据包,计时器超时则重传

信道利用率低下

退后N帧协议
  1. 发送方连续发送N个帧的数据,等待接收方回复ACK
  2. 如果某个帧在相应计时器超时的情况下没有得到确认,就重发错帧机器后面所有的帧。
  3. 发送方窗口大、接收方窗口小

比停止等待协议效率更高,但不适合网络线路很差的情况,浪费大量带宽重传帧。

选择重传协议
  • 发送方、接收方窗口大小相同,接收方可以缓存发送方的数据
  • 数据包具有顺序属性,因此接收方收到的数据可以不按原本顺序
  • 发送过程中有数据帧的计时器超时,仅重传该数据帧。等待接收方返回ACK信息。
  • 接收方数据完整后,再发送新一批数据帧。

解决了网路较差时发送数据效率低下的问题,但是接收端需要更多的缓存空间。

HTTP相关问题

HTTP是超文本传输协议,采用了请求响应模型。基于TCP/IP协议

  • 无连接,每次连接只处理一个请求,收到应答后断开连接
  • 媒体独立,只要两端知道如何处理数据,任何类型都可以传输
  • 无状态,对事务处理是独立的,没有有记忆能力
HTTP报文结构
HTTP请求报文
  • 请求行:包含方法字段、URL字段、HTTP协议版本三个字段,空格分割。请求方法有:GET(读取/传输数据,通过连接或网址输入),POST(大量传输数据,更安全),HEAD(只返回响应头,获取网页状态),PUT,DELETE,OPTIONS,TRACE,CONNECT.
  • 请求头部:以键值对的形式向服务器通知客户端的一些信息。如,浏览器类型,编码,内容长度,refer认证、要执行的动作
  • 空行:表明请求头发送完毕
  • 请求数据:传递POST方法所提交的表单信息
HTTP响应报文

由状态行、响应头部、空行、响应数据

  • 状态行:提供了一个状态码来说明所请求资源的情况。由HTTP协议版本、状态码、状态码描述组成。
  • 响应头部:用来重定向网页以及发送服务器端的软件信息,与请求头部相对应。
  • 空行:表明响应头已经发送完毕
  • 响应数据:服务端返回给客户端的数据
HTTP状态码含义
  • 1XX:表示服务器已接收客户端请求,客户端可继续发送请求
  • 2XX:表示服务器已成功接收请求并进行处理
  • 3XX:表示服务器要求客户端重定向
  • 4XX:表示客户端请求与非法内容
  • 5XX:表示服务器未能正常处理客户端请求而出现意外错误。
HTTP request类型
  • GET:向特定资源发出请求
  • POST:向指定资源提交数据并处理请求。可能导致新的资源或修改旧资源
  • PUT:向指定位置上传内容
  • DELETE:请求服务器删除指定位置资源
  • OPTIONS:返回服务器针对特定资源所支持的HTTP请求方法
  • HEAD:向服务器请求获取服务器的头信息
  • TRACE:回显服务器收到的请求
  • CONNECT:将连接改为管道方式的代理服务器。
HTTP长连接

即数据传输完成后保持TCP连接不断开(不发RST包,不四次握手),等待同域名下继续使用这个通道传输数据,相反就是短连接。
HTTP要使用长连接,需要加入Connection:keep-alive代码。该配置不会永久保持这个连接,有一个保持时间,实现长连接需要客户端和服务端都支持长连接。JDK检测到keep-alive标识后,在数据传输结束会将该连接放到连接缓存中。

HTTP 1.0、1.1和2.0
HTTP1.0和1.1
  • 长连接:1.0需要设置keep-alive参数。1.1默认支持长连接。
  • 节约带宽:1.1支持只发送HEADER信息,服务端认为客户端有权限则返回100,客户端收到后发送BODY体。无权限则发送401.
  • HOST域:1.1支持web Server上多个虚拟站点共享一个IP和端口
HTTP1.1和2.0
  • 多路复用:2.0支持一个连接并发处理多个请求,1.1需要创建多个TCP连接完成。
  • 数据压缩:1.1不支持header数据的压缩,2.0使用HPACK算法压缩头。
  • 服务器推送:2.0可以将客户端需要的资源推送过去,避免再次建立连接请求这些资源的开销。十分适合加载静态资源。

Cookie与Session的作用与原理

一些网站会将用户数据保持在客户端中,以简化客户端连接服务端时的过程。
Cookie是以文本的形式存储的,文本中存储着一些键值对。服务器通过Cookie来验证客户端是否有权限访问服务端资源。

Session

Session是服务器端使用的记录客户端状态的机制,用户将session id发送给服务端进行认证,使用比Cookie简单,但也增加了服务端的存储压力。Session其实相当于程序在服务器上建立的一份客户端档案,当客户端再次访问时,只需查询Session中对应的客户数据便可认证。

访问一个网页的整个过程

DNS,HTTP,TCP,OSPF,IP,ARP

  1. 使用DNS协议获取目标IP
  2. 通过ARP协议获取ip与mac地址的映射,通过OSPF协议获取到达目标IP的最短路由路径。
  3. 通过TCP与目标IP建立连接。
  4. 通过HTTP协议请求网页内容。

Ping的整个过程,ICMP报文是什么

同一网段
  1. 建立ICMP请求数据包
  2. 封装ip地址与数据包交给IP协议,构建IP数据包,ip层通过IP和资源掩码得知在同网段。
  3. 通过本机ARP缓存表获取MAC地址,如果没由则发送广播,封装成链路层使用的数据帧。然后进行发送。
  4. 目标机获取数据帧后进行解析,使用同样的流程回复。

不同网段

基本流程相似,不同的是将查询MAC地址的工作交给路由器完成。

C/S模式下的socket通讯及其关键函数

  • socket:用于生成socket连接
  • inet_addr:将10进制IP地址转换成32位整数表示法
  • gethostbyname:可以从主机名获取主机资料
  • bind:指定本地IP地址所使用的端口号
  • connect:与服务器建立连接,发出连接请求,必需指定服务器的IP地址与端口号。
  • select:用于查询一个或多个SOCKET的状态
  • recv:利用Socket接收数据
  • sendto:利用Socket发送数据

IP地址分类

  • A类地址:1字节网络地址+3字节主机地址,最高位必须为0,范围1.0.0.0-126.0.0.0,供126个网络,每个网络1亿主机。
  • B类地址:2字节网络地址+2字节主机地址,最高位必需位10,范围128.0.0.0到191.255.255.255,供16382网络,每个网络6万主机。
  • C类地址:3网络地址+1主机地址,最高位必须为110,范围192.0.0.0到223.255.255.255。网络数量209万,每网主机254个。
  • D类地址:多点广播,必须以1110开始,保留地址。
  • E类地址:11110开始,为将来保留。

路由器与交换机的区别

路由求段,交换求快

交换机

  • 用于同意网络内部数据的快速传输
  • 转发决策通过查看二层头部
  • 转发不需要修改数据帧
  • 工作在数据链路层
  • 工作简单,直接用硬件处理
  • 用于共享一条网线

路由器

  • 用于不同网络间数据的跨网传输
  • 转发决策需要查看三层头部
  • 转发需要修改TTL,IP头部校验和,数据帧需要重新封装
  • 工作在网络层
  • 需要软件处理
  • 用于共享IP
  • 5
    点赞
  • 12
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: 《信息网络理论基础》是李建东教授所著的一本关于信息网络理论的教材,该教材主要围绕信息网络的基本原理、架构和应用展开了深入浅出的阐述。 首先,该教材在理论基础上进行了系统的介绍。其中包括了信息网络的基本概念、信息网络的发展历程、信息网络的分类和特征等内容。通过对这些基础知识的解析,读者们可以更好地理解信息网络的本质和涵义。 其次,该教材还围绕信息网络的架构和设计进行了深入讲解。从物理层到应用层,作者对信息网络各个层次的结构和工作原理进行了详细的介绍。这不仅有助于读者了解信息网络的整体框架,还能够加深对网络通信、数据传输和协议设计等方面的理解。 此外,教材还涵盖了一些重要的应用领域。比如,互联网、移动通信网络和物联网等,这些都是当前信息社会中非常热门的话题。通过对这些应用领域的讲解,读者们可以对信息网络的实际应用有更全面的认识。 总的来说,李建东教授的《信息网络理论基础》是一本非常适合初学者阅读的教材。它不仅能够帮助读者建立起对信息网络的整体认识,还能够深入到信息网络的各个层面,使读者对信息网络的原理和应用有更深入的理解。对于学习信息网络的人士来说,这本教材绝对是一本非常有价值的参考书。 ### 回答2: 《信息网络理论基础》是由李建东编写的一本关于信息网络理论基础的教材。此书主要围绕信息网络理论基础进行了深入的介绍和探讨。 首先,本书阐述了信息网络的概念和特点。信息网络是指由各种信息传输和处理设备组成的网络系统,它能够实现信息的传输、存储和处理等功能。同时,信息网络具有并行性、分布性和开放性等特点,使得信息的传输和共享更加高效和便捷。 其次,本书详细介绍了信息网络的结构和组成要素。信息网络的结构主要包括网络拓扑结构、网络层次结构和网络互连结构等。而信息网络的组成要素则包括网络节点、通信链路、网络协议和网络管理等。 此外,本书还重点讲解了信息网络中的基础理论和技术。其中,包括信息传输理论、信息编码理论、信息交换理论网络安全理论网络性能评估理论等。这些理论和技术的深入理解,对于信息网络的设计、建设和维护都具有重要的指导意义。 最后,本书还涉及了一些相关的研究领域和前沿技术。如无线通信网络、云计算技术、物联网技术等。这些研究领域和技术都是当前信息网络发展的热点和前沿,对于读者深入了解信息网络的发展趋势和应用前景具有重要意义。 总的来说,《信息网络理论基础》是一本系统全面介绍信息网络理论基础的教材。通过阅读本书,读者可以了解信息网络的基本概念、特点和构成要素,掌握信息网络基础理论和技术,了解信息网络发展的热点和前沿。对于从事信息网络相关工作的人员和对信息网络感兴趣的读者来说,本书将是一本不可多得的参考书。 ### 回答3: 《信息网络理论基础》是李建东教授撰写的一本关于信息网络理论的重要著作。这本书主要涵盖了信息网络的基本概念、原理和应用等方面的内容。 首先,书中介绍了信息网络的发展历程和重要意义。信息网络的出现和迅速发展改变了人们的生活和工作方式,也对社会经济产生了深远的影响。通过网络,不仅可以实现信息的快速传递和共享,还能够促进各种资源的整合和利用,进一步推动社会的发展和进步。 其次,书中详细讨论了信息网络的基本组成和运作原理。信息网络由多个节点和连接线路组成,节点可以是计算机、服务器、路由器等,而连接线路可以是以太网、光纤等。这些节点之间通过传输协议进行信息的传递和交换,共同构成了一个庞大的信息网络。 除此之外,书中还介绍了信息网络的应用领域和发展趋势。信息网络广泛应用于互联网、电信、电子商务等领域,为人们的工作和生活带来了很多便利。随着技术的不断进步和社会的快速发展,信息网络也将不断创新和完善,向着更高的性能和更广泛的应用领域发展。 总之,李建东教授的《信息网络理论基础》通过深入浅出的方式,全面介绍了信息网络的基本原理和应用。这本书对于从事网络相关工作的人员,尤其是网络工程师和研究人员,具有很高的参考价值。同时,对于对信息网络感兴趣的读者来说,也是一本很好的入门书籍。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值