2.协议一

协议(一)

协议

双方沟通之后达成的约定

网络协议

通信计算机需要遵循的一组约定,只有遵循了这些约定,才能够正常通信

通信是数据从源到目的的传输,体现在的网络上就是数据包

OSI分层模型

国际标准化组织ISO提出的概念模型,开放系统互连参考模型。

目的:保证不同系统的计算机能够相互通信

为什么要分层?

网络传输本身非常复杂,为了解决复杂问题,采用分层的概念,每一层负责独立具体的功能,再把这些分层组合起来,最终实现模块化,复杂问题简单化。

每一层为上层提供服务,使用下层的服务。

OSI七层模型详解
  1. 应用层:为网络用户提供应用程序

    常见协议:HTTP,FTP,SMTP

    示例:我在咸鱼上架了一个人体工学椅

  2. 表示层:数据转化,压缩和加密解密

    常见协议:ASCII,JPEG

    示例:把椅子拆解,包装起来,带上一份组装说明书

  3. 会话层:建立、管理和终止会话连接

    常见协议:SQL,RPC

    示例:有人下单了,会话开始,等到对方收获,会话结束

  4. 传输层:建立端口和端口之间的连接,为会话层提供可靠传输。

    常见协议:TCP,UDP

    示例:快递公司,负责把货物从西安送到上海。

  5. 网络层:建立主机与主机之间的连接,为数据传输进行网络路由选择(选择主机到主机间最短/最快的路径)

    常见协议:IP,ICMP

    示例:快递公司确定了起始点和终点,选择出最短/最快的路径进行包裹发送

  6. 数据链路层:物理寻址,为网络层提供传输服务

    常见协议:HDLC,PPP

    示例:快递员通过电话和姓名联系到我们,取走快递,交给快递点。。。。到了目的地之后,快递员取走快递,交给对方。

  7. 物理层:数据传输介质,进行实际的数据传输

    常见协议:RJ45,RS-232

    示例:快递飞机,火车,小三轮等设备

TCP/IP模型

由OSI模型简化而成,并不是只有TCP、IP协议,只是说因为TCP/IP协议比较有代表性所以如此命名

  1. 应用层:对照的是OSI模型的应用层、表示层和会话层,为网络用户提供应用程序,负责一切与应用程序相关的功能

    协议:HTTP,SMTP,FTP

  2. 传输层:为应用层提供可靠的数据传输

    协议:TCP,UDP

  3. 网络层:实现网络间的寻址和数据传输

    协议:IP,ICMP

  4. 网络接口层:确定数据传输的物理设备,进行实际的数据传输

OSI模型与TCP/IP模型的比较
  1. OSI七层模型,TCP/IP四层模型
  2. OSI模型复杂,TCP/IP模型相对简单
  3. OSI模型先提出模型,后由协议;TCP/IP模型现有协议和应用,后来参照OSI模型提出TCP/IP模型
  4. OSI模型理想化,一直未被完整实现;TCP/IP模型是现行互联网的标准模型
TCP协议

传输控制协议,是一种面向连接的,可靠的,基于字节流的传输层通信协议

作用:保证数据传输的可靠性和完整性。

  1. 特点
    1. 面向连接的:先建立连接才能进行数据传输。
    2. 可靠的:
      1. 确认机制:发送方发送的报文,接收方必须确认,如果没有确认,就认为报文丢失,会重发报文。
      2. 超时重发:发送方估计一个保守的时间作为报文发送的超时时间,如果超过超时时间接收方仍没有确认,那就重发报文。
      3. 校验和:发送方通过报文数据计算出一个校验和,将校验和放到报文中一起发送,接收方接收之后使用相同的算法进行计算,结果与报文中一致就确认,不一致就丢掉等待重发。
    3. 基于字节流:应用层传递下来的数据非常庞大,如果一次性发送,遇到不稳定的网络问题,会造成时间和数据的损失。TCP协议会将数据转化成字节流,将数据分成一段一段,然后分别编号,分组发送。
  2. 报文结构

tcp报文

  1. 序列号和确认号
    1. image-20220424121625201
    2. 连接阶段通信双方会各自产生一个随机编号
    3. 发送方将自己的编号看作序号,确认对方的编号看作确认号
    4. 接收方确认的是对方序号的包,确认完成之后,需要将需要加一作为确认号,提示发送方下次发送什么序号的包
  2. SYN:连接标志,ACK:确认标志,FIN:释放连接标志
  3. ACK标志位在连接完成之后始终置一,直到断开连接
三次握手

image-20220424141101555

  1. A->B: A发起连接,SYN置1,产生随机序列号200,将请求发送给B
  2. B->A:B进行确认,ACK置1,确认号为200+1,SYN置1,产生随机序列号500
  3. A->B:A进行确认,ACK置1,确认好为500+1,序列号为201
  4. 连接建立
四次挥手

image-20220424142308860

  1. A->B: A发起断开连接请求,FIN置1,ACK置1,seq_num=300,ack_num=600
  2. B->A: B进行确认,ACK置1,seq_num=600, ack_num=301
  3. B->A:B发送断开请求,FIN置1,ACK置1,seq_num=600, ack_num=301
  4. A->B: A进行确认,ACK置1,seq_num=301,ack_num=601,
  5. B关闭连接,A等待一段时间之后关闭
三次握手和四次挥手面试题
  1. 为什么不能是两次握手?

    握手阶段需要确认双方的收发能力,两次握手做不到,三次握手是将四次握手中间两步合并了

  2. 为什么不能是三次挥手?

    被动断开连接的一方可能有未发完的数据,所以需要先发送ACK包进行确认,之后再发送FIN包

  3. 四次挥手阶段,为什么最后主动断开连接的一方需要等待一段时间(2MSL)?

    MSL: 报文最大生存周期

    A发送的最后一个报文,如果B没有收到,A就直接关闭,会导致B重发的FIN包无法被确认

    等待2MSL意味着A可以等到B之后重发的报文,确保连接正常关闭

UDP协议

用户数据报协议

特点:

1. 无连接1. 不可靠的:尽可能的进行交付1. 面向报文的:上层传来的报文,不合并不拆分,一次交付整个报文

报头

udp

TCP协议和UDP协议的比较
  1. TCP协议是面向连接的,UDP协议是无连接的
  2. TCP协议是可靠传输,UDP协议是不可靠的的
  3. TCP协议传输效率低,UDP协议传输效率高
  4. TCP协议支持一对一通信,UDP协议支持一对多,多对多,多对一,一对一
  5. TCP协议基于字节流,UDP协议是基于报文的
    5)]
TCP协议和UDP协议的比较
  1. TCP协议是面向连接的,UDP协议是无连接的
  2. TCP协议是可靠传输,UDP协议是不可靠的的
  3. TCP协议传输效率低,UDP协议传输效率高
  4. TCP协议支持一对一通信,UDP协议支持一对多,多对多,多对一,一对一
  5. TCP协议基于字节流,UDP协议是基于报文的
  6. TCP多应用于邮件传输,文件传输;UDP多应用于直播,游戏
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值