网络原理-传输层

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

        再谈端口号

        端口号标识了一个主机上进行通信的不同程序.端口号的划分为两个范围,0-1023为知名端口号,是操作系统留给广为流传的应用所使用的,1024-65535是操作系统动态分配的端口号.客⼾端程序的端口号,就是由操作系统从这个范围分配的.

        UDP协议

        UDP协议端格式      

        16位源端口号:发送方的端口号.

        16位目的端口号:接收方的端口号.

        16位UDP长度:整个UDP报的长度标识,单位:字节,因为只有16比特位,因此一个UDP报最大传输的信息量为64KB.

        16位UDP校验和:用户验证数据报内容是否正确,如果验证和出错则丢去数据报.

        //验证数据在传输过程中是否正确,只能确定数据是错的,不能准确确定数据是正确的(实践中近似认为,校验和正确,数据正确)

        UDP的特点

        无连接:不需要与通信方建立链接,只需要知道对端的IP与端口就能进行传输.

        不可靠:没有确认机制,没有重传机制,如果发生网络故障,信息没有正确发送给对方,UDP协议层不会给应用层返回任何错误信息.

        面向数据报:不能灵活的控制读写数据的内容和次数.

        //无论应用层交给UDP多长的报文,UDP都会照样发送,不会进行拆分和合并.

        UDP使用注意事项

        UDP报的最大长度是有限的,其容量64KB在今下的互联网上是一个非常小的数字,在使用UDP进行传输大数据时,需要在发送方的应用层手动拆分数据,在接收方的应用层手动合并数据.

        TCP协议 

        TCP协议段格式

        

        源/目的端口号:标识发送/接收方的端口号.

        32位序列号/32位确认号:后续补充.

        4位首部长度:表示首部长度,单位:32bit/4B,TCP首部最大长度为15*4=60B.

        保留位:目前没有实际用处,预留给后续需要拓展时使用.

        6个标志位:

     URG:紧急指针是否有效.

     ACK:确认号是否有效,应答报文的ACK为1.

     PSH:提示接收端应用程序立刻从TCP缓冲区把数据读走.

     RST:对方要求重新建立链接,把RST标识的称为复位报⽂段.

     SYN:请求建立链接,把SYN标识的称为同步报文段.

     FIN:通知对方本段要关闭了,把FIN标识的称为结束报文段.

        16位窗口大小:后续补充.

        16位校验和:校验数据准确性.

        16位紧急指针:标识那部分信息是紧急数据.

        头部选项:后续补充.

        TCP的特点

        面向连接:在数据传输前,TCP需要建立连接,传输完成后再断开连接.

        可靠:TCP通过多种机制(如确认应答,超时重传,错误检测等)确保数据无差错,不丢失,不重复地传输到接收方,并且保证数据的接收顺序与发送顺序一致.

        面向字节流:TCP以字节流的形式传输数据,应用层的数据被分割成适合网络传输的小块后发送,接收方再将其重新组装.

        确认应答

        TCP的确认应答是确保TCP可靠性最核心的机制.

         

        TCP将每个字节的数据都进行了编号,即为序列号.每一个ACK都带有对应的确认序列号,确认序列号为接收到的最后一个数据的编号+1,确认序列号负责告诉发送者已收到信息,下次信息从确认序列号开始进行发送.

        超时重传

        

        主机A发送数据给B之后,可能因为⽹络拥堵等原因,数据⽆法到达主机B.

        如果主机A在⼀个特定时间间隔内没有收到B发来的确认应答,就会进⾏重发.

        再者,如果主机B接收到了数据,但是ACK丢包了,那么A也会重新发送数据,主机B就要对数据进行去重.TCP协议使用序列号来打到去重的效果.

        去重过程:

        1.如果数据依旧存留在TCP的接收缓冲区中,没有被应用层读走.那么用新接收的序列号与签名的序列号进行比较,如果找到相同的序列号则抛弃重复数据.

        2.如果数据已经被应用层读走了,socket api是可以记录最后一次读取的数列号是多少,同时数据的读取是从序列号小的开始,如果新接收的数据的序列号小于记录的序列号,则新接收的数据是重复数据直接抛弃.

        超时时间的确定:

        最理想的情况下,找到⼀个最小的时间,保证"确认应答⼀定能在这个时间内返回".

        但是这个时间的长短是随着网络的质量变化的.如果超时时间设的太长,那么会影响数据的传输效率,如果超时时间设置的太短,就可能会让重传频繁发生.

        TCP为了保证无论在什么网络下都能进行高性能的通信,因此会动态计算这个超时时间,重传次数越多,超时时间越长,当重传次数打到一定数量后,TCP认为网络或对端出现异常,强制断开链接.

        

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值