网络原理之传输层TCP/IP
传输层
传输层五元组:协议号+源IP+源port+目的IP+目的port
协议:网络数据传输时,经过网络节点约定的规则,最终体现为数据格式
IP:在网络层IP协议中包含IP地址这个字段,体现为起点和终点,绑定主机
port:主机中的进程端口,识别进程
注:一个进程可以绑定多个端口号;一个端口号只能绑定一个进程
网络数据传输可以对应发送快递的例子:
二. UDP传输协议
UDP协议格式
校验和:类似文件的MD5、sha1值作为校验码,通过一个算法,计算二进制数据,算出一个校验码,类似于Java对象中的hashcode,标识唯一。
UDP的特点
- 无连接:知道对方的IP和端口号就直接进行传输,不需要建立连接;
- 不可靠:没有确认机制,没有重传机制;如果因为网络故障,所发送的的段无法发送到对方,UDP协议层也不会给应用层返回任何错误信息;
- 面向数据报:发送和接收都只能一次完成,不能灵活的控制读写数据的次数和数量;
- 发送数据大小受限,最多64K,当需要传输的数据超过64K时,就需要在应用层手动分包,多次发送,并且在接收端手动拼装;
基于UDP的应用层协议
- NFS:网络文件系统
- TFTP:简单文件传输协议
- DHCP:动态主机配置协议
- BOOTP:启动协议(用于无盘设备启动)
- DNS:域名解析协议
TCP传输协议
概念:TCP全称为“传输控制协议”,要对数据的传输进行一个详细的控制;其设计原则是:网络数据传输,在保证安全的前提下,尽可能的提高传输效率。
TCP协议格式
- 源/目的端口号:表示数据是从哪个进程来,到哪个进程去;
- 32位序号:它的范围[0,2^32-1],也就是说一共有4294 967 296个序号。TCP中的序号,指的是报文段序号。
- 32位确认号:对方通过回复一个确认号,来表示确认已经收到了哪些TCP段。
- 4位TCP报头长度:表示该TCP头部有多少32位bit(有多少4个字节);所以TCP头部的最大长度是15*4=60;
- 6位标志位:
- URG:紧急指针是否有效
- ACK:确认号是否有效
- PSH:提示接收端应用程序立刻从TCP缓冲区把数据拿走
- RST:对方要求重新建立连接,我们携带RST标识的称为复位报文段
- SYN:请求建立连接,我们把携带SYN标识的称为同步报文段
- FIN:通知对方,本端要关闭了,我们称携带FIN标识的为结束报文段
- 16位窗口大小:
- 16位校验和:发送端填充,CRC校验校验,接收端校验不通过,则认为数据有问题,此处校验和不光含TCP首部,也包含TCP数据部分
- 16位紧急指针:标识哪部分数据是紧急数据
- 40字节头选项:
TCP的可靠性:
- 校验和
- 序列号(按时到达)
- 确认应答
- 超时重发
- 连接管理
- 流量控制
- 控制拥塞
提高性能
- 滑动窗口
- 快速重传
- 延时应答
- 捎带应答
基于TCP应用层协议
- HTTP
- HTTPS
- SSH
- Telnet
- FTP
- SMTP
TCP/UDP对比
TCP是可靠连接,但是TCP也不是一定优于UDP,TCP和UDP之间的优点和缺点,不能简单的绝对的进行比较
- TCP用于可靠性的情况,应用于文件传输,重要状态更新等场景
- UDP用于对高速传输和实时性要求较高的通信领域,例如早期的QQ、视频传输等,也可以用于广播。