再次理解传输层的UDP协议和TCP/IP协议

传输层

负责数据能够从发送端传输到接收端

IP地址

(Internet Protocol Address),全称网际协议地址,唯一地标识了网络中的主机地址

端口

端口标识了主机上的为一个进程
在TCP/IP协议中,用“源IP",“源端口号”,“目标IP”,“目标端口”,”传输层协议“,这样一个五元组来标识一个通信(可以在cmd中,用netstat -n 命令来查看

注意:一个端口号只能属于一个进程(在写一个服务器时,如果你用了和本机上某一个进程一样的端口号,你会发现在运行时,会报该端口已被使用的错误),由于某些应用程序会有多个进程,所以对于应用程序来说会有多个端口(毕竟,端口只能标记一个进程)

端口号划分

0-1023:知名端口号,HTTP,FTP,SSH等这些广为使用的应用层协议,他们端口号都是固定的
1024-65535:操作系统动态分配的端口号,客户端的端口号,就是由操作系统从这个范围动态分配的

常见的协议默认端口

HTTP服务器:使用80端口
HTTPS服务器:使用443

UDP协议

①UDP协议格式

16位源端口,16位目标端口,16位UDP长度,16位UDP检验和,数据(可以没有)

  • 16位UDP长度,表示整个数据报(UDP首部+UDP数据)的最大长度
  • 如果检验和出错,就会直接丢弃(对于接受端的传输层UDP会通过检验和,检验数据是否大概率是发送端发送的数据,如果不是,那这个数据就是错误的信息,没必要给应用层,就会直接丢弃)
  • 数据前面的属于包头:发送端的UDP对数据进行打包(就是除了数据包括以上的信息),接收端的UDP对接受的到的信息进行解包(去包头),分用(根据目标端口交给应用层的进程)

UDP的特点

①无连接
②不可靠
③面向数据报文

  • 为什莫说UDP不可靠呢,拿 请求/响应模式 这种思路来考虑,UDP只管发,相当于只请求,没有响应,意味着不知道接收端有没有收到自己的信信息
  • 无连接指的是想发就发,不需要准备工作

TCP协议

为什么说TCP是可靠的

TCP可靠性指的的是,TCP会尽最大努力,让数据正确的发送给对方,但它不能保证一定可以发送给对方(因为数据的最终传输是通过硬件层的传输,可能会因为信号衰减等别的原因,会出现错误(这里我是拿硬件层来理解的))

*数据会尽力发给对方,至少发送端的应用层会知道发送失败的情况

  • TCP会选择合适的数据大小发送(流量控制),而不像UDP,应用层给多少数据,就发送多少数据。TCP也会保证接受端接受信息,会是按顺序来的
  • TCP会做重传操作,所以有时候,会出现接收到重复的数据。TCP会负责处理

TCP怎么知道对方有没有收到数据

接收端会根据TCP内部规则的时间内,是否收到接收方的应答,确定是否发送信息失败

TCP发现收据丢失之后,会进行超时重传

① TCP既有重传机制又有缓冲区,说明,它会保留发送的数据,在发送失败之后,进行重传
② 如果重传也失败,再次重传,超时时间增大,TCP内部规定了一个重传次数,如果达到该次数,告诉发送方的应用层出问题

注:超时时间指的是,发送消息到没有接受消息的时间(这个时间是内部规定的,比如:500ms)

没有应答会是以下几个情况

① 对方没有收到信息
② 对方的应答没有丢失


对于应答,应答的是那份数据,具不具备应答能力,包头信息中,引入序列号(Sequence Number ,简写 SN),应答序列号(Acknowledge Sequence Number,简写ASN),ACK( Acknowledge的缩写)

  • SN : 发送数据时,该批数据的编号,为第一个自己的编号
  • ACK: 0代表不具有应答能力(一般来说,如过没有应答,它的值不会呗改变),1代表有
  • ASN: 应答那批数据(当ACK = 1 才有用)

当第一发送的数据长度为100,SN为0,当应答回来之后,ACK变为1,ASN=0+100=0,SN = ASN

这些表示,下一次应答的为100字节以后的,因为ACK为1.,ASN=100表示,下一次期望的数据是从100开始

有了序列号之后,解决了

①确认—应答机制,接收方应答正确的序号,发送方根据ASN,知道那些数据已经被收到
②乱序的问题,由于TCP的流量控制机制,可能会产生乱序,TCP接收方的缓冲区,会根据序号对数据排序,再给应用层
③去重问题。根据序列号会知道(ASN),确定数据是否已经被收到

连接管理

①TCP内部管理这些数据
②由于应用层会收到来自多个用户的请求,所以每个用户会有一个自己的通信通道,TCP会管理各自的信息。
③五元组信息是连接的唯一标识

TCP通信

TCP在正式通信之前 ,有一些信息是不知道的(需要双方的TCP互相同步一波信息),五元组信息等…

  • 简化步骤是:A介绍自己,B回应A的介绍(B介绍自己),A回应B
    个人理解:这样既是完成五元组信息,也是确保A能回应B,B也能回应A,所以是三次
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值