传输层的协议:udp tcp 和sctr(一种电话传输的协议)
主要是tcp和udp协议
tcp协议:
tcp协议是面向连接,字节流 和可靠传输
面向连接体现在两方通信必须要先连接就和现实中打电话首先要联通两方的电话线才能打;
字节流:
主要是和数据报区别体现在通信双方是否需要执行相同的读写操作;内部的体现是tcp是将多条待发送的消息先放到tcp发送缓冲去,然后有可能封装一个tcp报文发送;读只读一次;当发送的数据大于缓冲区大小时会被分成多分发送 ,接收端收到一个或多个tcp报文后tcp将他们安装序号拼接放到接受端的tcp缓冲区然后通知应用程序读;应用程序可一一次读完也可以多次读取tcp的报文段个数和应用程序的读写次数没关系;
可靠性:
tcp采用的发送应答机制,发送的每个tcp报文必须得到对方的应答,才算发送成功;tcp采用超时重传机制,每发出一个报文之后就会启动定时器如果一段时间内没有收到应答,他将会重发此条报文段,tcp的报文段是以ip数据发送出去所以数据可能重复乱序tcp协议要对收到的tcp报文进行重排整理交给上层;
tcp固定的头部结构
××××××××××××××××××××××××××××
16为源端口号 16位目标端口号
32位序号 系统随机的isn 后面的报文直接加字节的偏移 序列号是当前发送成功的位数
32位确认号 如果是回复的话确认号是给当前的收到的序号+1 如果通信回复的是当前的序号和上条回复的序号+1为确认号
4位头部长度(表示的是tcp头部的大小) 6位保留 6位标志 16位窗口大小
16位校验和 16为紧急指正
×××××××××××××××××××××××××××××
6位标志
urg 紧急指针是否有效
ack标志 确认号是否有效 携带ack标志的tcp报文叫确认报文
psh标志 提示接收应用程序立刻从缓冲区中读走数据为接下来的数据腾出空间(感觉可以解决粘包问题(后续查资料解决))
ret 标志 表示双方重新建立连接 ret标志为复位报文
syn标志 双方建立连接同步报文
fin标志 表示通知对方本段要关闭 这个报文叫结束报文
16位窗口大小具体(参见后续滑动窗口)一句话根据对方能处理的数据能力发送数据