通信的时候,虽然都说是主机和主机之间的通信,但是实际上是主机之间的进程和进程之间的通信,比如说发微信,就是两个手机之间的微信进程进行通信,进行一个数据的传输。
概述
一般来说,我们称TCP传输的是一个报文段,UDP传输的是一个用户数据报,方便起见不区分,都称作报文段
两个协议简介
端口
SAP:服务访问点
端口只在本主机中能够区分进程就可以
TCP协议
特点
全双工通信指的是双方都能发送和接受数据
传输一个文件的过程中,会对文件按照字节编号,然后放入TCP缓存,然后取出来一部分加上TCP头部形成报文段,放到链路上面进行传输
TCP首部中的报文格式
TCP连接管理
只有在连接请求和连接请求接受的时候SYN才是1,seq为序号,ACK确认位,ack确认号
TCP连接释放
这里客户端想结束,注意v和w都是根据上一次的传输定的,但是u随意
可靠传输
TCP传输的时候以字节为单位,把一个字节编上一个序号,第一个序号是多少,是可以随机的,传输的时候是分报文段,,这个报文段的大小是根据链路层的MTU,也就是最大传输单元决定
确认
重传
流量控制
TCP的自适应算法RTTs,根据每个RTT计算出RTTS,能够照顾到
UDP协议
没有建立链接,维护链接和释放链接这一过程,减小了时间开销
伪首部和IP数据报的首部有点类似
伪首部当中包括源IP地址和目的IP地址,还有17
17是IP数据报首部的协议字段,这个协议字段其实就在说明数据部分使用的什么字段,这个部分数据部分使用的UDP协议,传输层的UDP,对应的协议字段值是17
也就是发送端和接收端在校验数据和首部有没有发生问题,有没有出错的时候,才会出现伪首部,其他时候,在传输过程中这个伪首部都不会出现
左边是发送端准备发送的一个UDP数据报,加上了伪首部进行校验,这个整体看成一个由16进制的字串连接起来的,也就是很多个四个字节的组成部分,如果数据部分不够四个字节,后面添上0,检验的时候,检验和已经变成了之前修改后的结果