传输层协议介绍
传输层协议介绍
一、TCP协议介绍
1、TCP和UDP协议
1)TCP/IP协议族的传输层协议
① TCP(Transmission Control Protocol)
传输控制协议
② UDP(User Data gram Protocol)
用户数据报协议
2、TCP协议
1) TCP是面向连接的,可靠的进程到进程通信的协议
2) TCP提供全双工服务,即数据可在同一时间双向传输
3) TCP 报文段
① TCP将若干字节构成一个分组,叫报文段(Segment)
② TCP报文段封装在IP数据报中
- 源端口号:它是16位字段,为发送方进程对应的端口号
- 目标端口号:是16位字段,对应的是接收端的进程,接收端收到数据段后,根据这个端口号来确定把数据送给哪个应用程序的进程
- 序号:发送端为每个字节编号重组,便于接收端正确重组
- 确认号:用于确认发送端的信息
- 首部长度:用它可以确定首部数据结构的字节长度
- 窗口大小:用于说明本地可接受数据段的数目,窗口大小是可变的
- 保留:这部分保留位作为今后扩展功能用
- 控制位:TCP的连接,传输和断开都受这六个控制位的指挥
URG:紧急指针有效位
ACK: 确认序号位,当该位为“1”时,用于确认发送的数据;只有当ACK=1时,确认序列号字段才有效
PSH:标志位为“1”时,要求接收方尽快将数据段送达应用层
RST:当RST值为“1”时,通知重新建立TCP连接
SYN:同步序号位,TCP需要建立连接是将该值设为“1”
FIN: 发送端完成发送任务,当TCP完成数据传输需要断开连接时,提出断开连接的这一方将这个值设为“1”
3、TCP的连接
1)TCP建立连接的过程称为三次握手
2)TCP断开连接的四次挥手
3)半关闭和半连接
- 半关闭:当TCP链接中A向B发送FIN 请求关闭,另一端B回应ACK 之后,并没有立即发送FIN给A,A方处于半连接状态(半开关),此时A可以接收B发送的数据,但是A已经不能再向B发送数据
- 半连接:发生在TCP三次握手中
如果A向B发起链接,B也按照正常情况响应了,但是A不进行三次握手,这就是半连接。
半连接攻击:半连接,会造成B分配的内存资源就一直这么耗着,直到资源耗尽。(SYN攻击)
- 半打开:如果一方关闭或者异常关闭(断电,断网),而另一方并不知情,这样的链接称之为半打开。处于半打开的连接,如果双方不进行数据通信,是发现不了问题的,只有在通信是才真正的察觉到这个连接已经处于半打开状态,如果双方不传输数据的话,仍处于连接状态的—方就不会检测另外—方已经出现异常
- 解决方法:
如何解决半打开问题,引入心跳机制就可以家觉半打开。
如果需要发数据的话,这边收到之后其实发现这个连接并不存在了,就会回复RST包告知,这个时候就需要重新建立连接了
4、常用的TCP端口号及其功能
二、UDP协议
1、UDP协议概述
1) 是无选择,不可靠的传输协议
2) 花费的开销小
2、UDP报文的首部格式
源端口号:用来标识数据发送端进程
目的端口号:用来标识数据接收端的进程
UDP长度:用来指出UDP的总长度,为首部加上数据
校验和:用来完成对UDP数据的差错校验,它是UDP协议提供的唯一可开机制
3、常见的UDP端口号及其功能