复习-计算机网络

文章目录

第七章 计算机网络

  • get和post的区别
  • 了解一下比较重要的协议

7.1 OSI与TCP/IP各层的结构与功能,都有哪些协议?

  • IP地址和MAC地址的作用和关系
    • IP和MAC两者之间分工明确,默契合作,完成通信过程
    • 在数据通信时,IP地址专注于网络层,网络层设备(如路由器)根据IP地址,将数据包从一个网络传递转发到另一个网络上
    • 而MAC地址专注于数据链路层,数据链路层设备(如交换机)根据MAC地址,将一个数据帧从一个节点传送到相同链路层的另一个节点上。
    • 网络层实现主机之间的通信,而链路层实现具体每段链路之间的通信,因此在通信过程中,IP数据报的源地址和目的地址始终不变,而MAC地址随着链路的改变而改变
  • IP和MAC地址这种映射关系由ARP(Address Resolution Protocol,地址解析协议)协议完成:
    • ARP协议根据目的IP地址,找到中间节点的MAC地址,通过中间节点传送,从而最终达到目的网络。

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

7.1.1 OSI的七层协议

在这里插入图片描述

7.1.2 TCP/IP的体系结构

在这里插入图片描述

7.1.3 五层协议

在这里插入图片描述

1,应用层
  • 应用层的任务是通过应用进程间的交互来完成特定网络应用。应用层协议定义的是应用进程(进程:主机中正在运行的程序)间的通信和交互的规则。对于不同的网络应用需要不同的应用层协议。如域名系统DNS,支持万维网应用的HTTP协议,支持电子邮件的SMTP协议等等。
2,运输层
  • 运输层的主要任务就是负责向两台主机进程之间的通信提供通用的数据传输服务。应用进程利用该服务传送应用层报文。“通用的”是指并不针对某一个特定的网络应用,而是多种应用都可以使用同一个运输层服务。运输层具有复用和分用的功能。所谓复用就是指多个应用进程可同时使用下面运输层的服务,分用和复用相反,是运输层把收到的信息分别交付上面应用层中的相应进程。
  • 运输层主要使用以下两种协议:
    • 1,传输控制协议TCP—提供面向连接的,可靠的数据传输服务
    • 2,用户数据协议UDP—提供无连接的,尽最大努力的数据传输服务(不保证数据传输的可靠性)
3,网络层
  • 在计算机网络中进行通信的两个计算机之间可能会经过很多个数据链路,也可能还要经过很多通信子网。网络层的任务就是选择合适的网间路由和交换结点,确保数据及时传送。在发送数据时,网络层把运输层产生的报文段或用户数据报封装成分组和包进行传送。在TCP/IP体系结构中,由于网络层使用IP协议,因此分组也叫IP数据报,简称数据报。
  • 这里要注意:不要把运输层的“用户数据报UDP”和网络层的“IP数据报”弄混。另外,无论是哪一层的数据单元,都可笼统地用“分组”来表示。
4,数据链路层
  • 数据链路层通常简称为链路层。两台主机之间的数据传输,总是在一段一段的链路上传送的,这就需要使用专门的链路层协议。在两个相邻节点之间传送数据时,数据链路层将网络层交下来的IP数据报组装成帧,在两个相邻节点间的链路上传送帧。每一帧都包括数据和必要的控制信息。(如同步信息,地址信息,差错控制等)

  • 在接收数据时,控制信息使接收端能够知道一个帧是从哪个比特开始和到哪个比特结束。这样,数据链路层在收到一个帧后,就可从中提出数据部分,上交给网络层。

  • 控制信息还使接收到端能够检测到所收到的帧中有无差错。如果发现差错,数据链路层就简单地丢弃这个出了差错的帧,以避免继续在网络中传送下去白白浪费网络资源。如果需要改正数据在链路层传输时出现的差错(这就是说,数据链路层不仅要检错,而且还要纠错),那么就要采用可靠性传输协议来纠正出现的差错。这种方法会使链路层的协议复杂些。

  • 封装成帧

  • 差错控制

  • 透明传输

5,物理层
  • 在物理层上所传送的数据单位是比特
  • 物理层的作用是实现相邻计算机节点之间比特流的透明传送,尽可能屏蔽掉具体传输介质和物理设备的差异。使其上面的数据链路层不必考虑网络的具体传输介质是什么。“透明传输比特流”表示经实际电路传送后的比特流没有发生变化,对传送的比特流来说,这个电路好像是看不见的。

7.2 TCP三次握手和四次挥手

7.2.1 三次握手

在这里插入图片描述

  • 客户端发送一段TCP报文,其中包括标志位SYN=1,序列号seq = x;

  • 服务端接收到客户端的报文后,返回一段TCP报文,其中包括标志位SYN=1,seq=y,ack = x+1

  • 客户端收到服务端确认收到的报文后,明确了从客户端到服务端的数据传输正常,并且返回给服务端最后一段报文,包括标志位ACK=1,seq = x+1,ack = y+1

  • 为什么要三次握手

    • 三次握手的目的是为了建立可靠的通信信道,说到通讯,简单来说就是数据的发送与接收,而三次握手最主要的目的就是双方确认自己与对方的发送与接收是正常的。
    • 第一次握手,客户端什么都不能确认;服务端确认了对方发送正常,自己接收正常
    • 第二次握手,客户端确认了自己发送,接收正常,对方接收发送正常,服务端确认了,对方发送正常,自己接收正常
    • 第三次握手,客户端确认了自己发送,接收正常,对方接收发送正常,服务端确认了,自己发送,接收正常,对方发送接收正常
  • 三次握手完成的两个重要功能

    • 既要双方做好发送数据的准备工作(双方都知道彼此已准备好)
    • 允许双方就初始序列号进行协商,这个序列号在握手过程中被发送和确认
  • 为什么是三次握手不是两次或者四次?

    • 经过两次握手的话服务端无法知道客户端是否具备接收以及自己是否具备发送的能力,只有通过三次握手通信双方才能知道自己和对方是否都具备收发能力;并且两次握手的话如果首次握手的报文超时客户端再重发之后,服务端接收到之前的那个报文也会直接建立连接,浪费资源。
    • 如果是两次握手,会造成资源浪费,有可能发生死锁。
    • 四次握手也能够可靠的的同步双方的初始化序号,但由于第二步和第三步可以优化成一步,所以就成了三次握手
  • 为什么要传回SYN

    • 接收端传回发送端所发送的SYN是为了告诉发送端,我接收到的信息确实是你所发送的信号了
  • 传了SYN,为啥还要传ACK

    • 双方通信无误必须是两者互相发送信息都无误。传了SYN,证明发送方到接收方的通道没有问题,但是接收方到发送方的通道还需要ACK信号来进行验证。

7.2.2 四次挥手

在这里插入图片描述

  • 1,客户端向服务端发送一段TCP报文,其中包括FIN=1,表示请求释放连接,序号为Seq = u,停止客户端到服务端方向上发送数据,但是客户端仍然能接收到从服务端传输过来的数据
    • 注意,这里不发送的是正常连接时传输的数据(非确认报文),而不是一切数据,所以客户端仍然能发送ACK确认报文
  • 2, 服务端接收到从客户端发出的TCP报文后,确认了客户端想要释放连接,服务端返回一段报文:标志位为ACK=1,seq = v,ack = u+1
  • 前两次挥手既让服务端知道了客户端想要释放连接,也让客户端知道了服务端了解了自己想要释放连接 的请求。于是,可以确认关闭客户端到服务端方向上的连接。
  • 3,服务端做好了释放服务器端到客户端方向上的连接准备,再次向客户端发出一段TCP报文,其中,标记位:FIN=1,ACK=1,seq = w,ack = u+1。并且停止在服务器端到客户端的方向上发送数据,但是服务器端仍然能接收到从客户端发送的数据
  • 4,客户端收到从服务端发出的TCP报文,确认了服务端已做好释放连接的准备,并向服务器端发送一段报文,其中ACK=1,seq = u+1,ack = w+1;随后客户端开始在TIME-WAIT阶段等待2MSL。
  • 客户端等待完2MSL之后,结束TIME-WAIT阶段,进入CLOSED阶段,由此完成“四次挥手”
  • 后“两次挥手”既让客户端知道了服务器端准备好释放连接了,也让服务器端知道了客户端了解了自己准备好释放连接了。于是,可以确认关闭服务器端到客户端方向上的连接了,由此完成“四次挥手”

7.2.3 关于序列号和确认号加1的问题

  • 看到序列号和确认号不一定加一,而是和发送和接收的数据有关。如果没有发送数据序列号是要加一的,但如果发送了数据则下一次发送的序列号就不是加一了而是加上发送的数据量,而如果没有接收到数据则确认号是要加一的,但如果收到了数据则下一次发送的确认号就不是加一而是加上收到的数据量。

  • 为什么客户端在TIME-WAIT阶段要等2MSL

    • 第一,如果客户端在2MSL内,再次收到了来自服务器端的FIN报文,说明服务器端由于各种原因没有接收到客户端发出的ACK确认报文。客户端再次向服务器端发出ACK确认报文,计时器重置,重新开始2MSL的计时;
    • 否则客户端在2MSL内没有再次收到来自服务器端的FIN报文,说明服务器端正常接收了ACK确认报文,客户端可以进入CLOSED阶段,完成“四次挥手”。
    • 第二,防止类似与“三次握手”中提到了的“已经失效的连接请求报文段”出现在本连接中。客户端发送完最后一个确认报文后,在这个2MSL时间中,就可以使本连接持续的时间内所产生的所有报文段都从网络中消失。这样新的连接中不会出现旧连接的请求报文。
  • MSL:报文最大生存时间

    • MSL的时长其实是一个估计值,由于这个值会影响很多基于TCP的应用的连接复用和调优,所以在实际生产中,需要针对具体的应用来调整MSL的具体值(需要注意的是,由于MSL值是对于系统层面来说,所以调整后,会对系统中部署的全部应用产生影响)。

7.2.4 为什么握手是三次,挥手却是四次

  • TCP释放连接时之所以需要“四次挥手”,是因为FIN释放连接报文和ACK确认接收报文分别是由第二次和第三次“握手”传输的。建立连接时,被动方服务器端结束CLOSED阶段进入“握手”阶段并不需要任何准备,可以直接返回SYN和ACK报文,开始建立连接;而释放连接时,被动方服务器,突然收到主动方客户端释放连接的请求时并不能立即释放连接,因为还有必要的数据需要处理,所以服务器先返回ACK确认收到报文,经过CLOSED-WAIT阶段准备好释放连接之后,才能返回FIN释放连接报文。

7.3 TCP,UDP协议的区别

7.3.1 UDP

  • UDP在传送数据之前不需要先建立连接,远地主机在收到UDP报文之后,不需要给出任何确认。虽然UDP不提供可靠交付,但在某些情况下UDP确实是一种最有效的传输工作方式(一般用于即时通信),比如QQ语音,视频,直播等等。传输形式是数据报文段,传输效率高,所需资源少,应用在要求通信速度高的地方
  • UDP传输报文的方式是由应用程序控制的,应用层交给UDP多长的报文,UDP照样发送,既不拆分,也不合并

7.3.2 TCP

  • TCP提供面向连接的服务,在传送数据之前必须先建立连接,数据传送结束后需要释放连接。TCP不提供广播或者多播服务,由于 TCP 要提供可靠的,⾯向连接的传输服务(TCP的可靠体现在TCP在传递数据之前,会有三次握⼿来建⽴连接,⽽且在数据传递时,有确认、窗⼝、重传、拥塞控制机制,在数据传完后,还会断开连接⽤来节约系统资源),这⼀难以避免增加了许多开销,如确认,流量控制,计时器以及连接管理等。这不仅使协议数据单元的⾸部增⼤很多,还要占⽤许多处理机资源。
  • TCP所需资源多,传输效率慢,传输的形式是字节流。
  • TCP应用于要求通信数据可靠的,一般用于文件传输,发送和接收邮件,远程登录等场景。
  • T
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值