传输协议的介绍
传输层(Transport Layer)的主要功能是实现网络中不同主机上用户进程之间的数据通信。
网络层和数据链路层负责将数据送达目的端主机,而这个数据需要什么用户进程去处理,就需要传输层帮忙了。
传输层要决定对会话层用户(最终的网络用户)提供什么样的服务。因此,我们经常把1~3层的协议称为点到点的协议,而把4 ~7层的协议叫作端到端的协议。
由于绝大多数主机都支持多进程操作,机器上会同时有多个程序访问网络,这就意味着将有多条连接进出这台主机,需要以某种方式区别报文属于哪条连接,识别这些连接的信息可以放在传输层的报文头中,除了将几个报交流路复用到一条通道上,传输层还必须管理跨网连接的建立与拆除。这就需要某种命名机制,便机器内的进程能够说明其希望交谈的对象。
1.TCP协议介绍
TCP和UDP协议
TCP (Transmission Control Protocol )
传输控制协议
UDP(User Datagram Protocol )
用户数据报协议
TCP是面向连接的、可靠的进程到进程通信的协议
TCP提供全双工服务,即数据可在同一时间双向传输,每一个TCP都有发送缓存,用来临时储存数据。
TCP报文段
TCP将若干个字节构成一个分组,叫报文段(segment)
TCP报文字段封装在IP数据报中
2.TCP报文格式
首部长度为20~60字节
- 源端口号:它是16位字段,为发送方进程对应的端口号。
- 目标端口号: 它是16位字段,对应的是接受端的进程,接收端收到数据段后,*这个端口号来确定数数据送给哪个应用的进程。
- 序号:发送端为每个字节进行编号,便于接收端正确重组。
当TCP从进程接受数据字节时,就把他们储存在发送缓存中,并对每一个字节进行编号。
编号不一定从0开始,一般会产生一个随机数作为第一个字节的编号,称为初始序号(ISN)
TCP每个方向的编号都是互相独立的。
当字节都被编上号后,TCP就给每个保温段指派一个序号,序号就是该报文段中第一个字节的编号
当数据到达目的地之后,接收端会按照这个序号把数据重新排列,保证数据的正确性。 - 确认号:用于确认发送端的信息。
- 首部长度:用它可以确定首部数据结构的字节长度,一般情况下TCP首部是20字节,但首部长度最大可以扩展为60字节。
- 保留:这部分保留位作为今后扩展功能用,现在还没有使用到。
- 控制位:这六位有很重要的作用。TCP的连接、传输和断开都说这六个控制位的指挥。
- URG:紧急指针有效位
- ACK:确认序号位,当该位为1时,用于确认发送方的数据。当ACK=0时,确认***字段无效。
- PHS:标志为1是要求接受方尽快将数据段送达应用层。
- RST:当RST值 为1时通知重新建立TCP勘界
- SYN:同步序号位,TCP需要建立连接时将该值设为1。
- FIN:当TCP断开连接时将该位置为1。
- 窗口大小:用于说明本地可接受数据段的树木,窗口大小是可变的。当网络通畅时将这个窗口值变大可以加快传输速度,当网络不稳定时减小这个值可保证网络数据的可靠传输,TCP协议中流量控制机制就是依靠变化窗口值的大小实现的。
- 校验和:用来做差错控制,与ip的校验和不同,TCP校验和的计算包括TCP首部、数据和其他填充字节。在发送TCP数据段时,由发送端计算校验和,当到达目的地时再进行一次校验和计算,若两次的校验和计算一致,则说明数据基本是正确的,否则将认为数据已被破坏,接收端将丢弃数据。
- 紧急指针:和URG配合使用,当URG=1时有效。
- 选项:在TCP首部可以有多大40字节的可选信息。
3.TCP三次握手
TCP建立连接的过程称为三次握手
在数据通信之前,发送端与接收端要先建立连接,等数据发送结束后,双方在断开连接。TCP连接的每一方都是有一个ip地址和一个端口号组成。
4.TCP四次挥手
参加数据连接的双方中任何一方(客户或服务器)都可以关闭连接。TCP连接分为四步
1.服务器向客户端发送FIN和ACK位置1的TCP报文段。
2.客户端向服务器返回ACK位置1的TCP报文段。
3.客户瑞向服务器发送FIN和ACK位置1的TCP报文段。
4.服务器向客户端返回ACK位置1的TCP报文段。
在TCP断开连接过程中,有一个半关闭的概念。TCP一方( 通常是客户端)可以终止发送数据,但仍然可以接收数据,称为半关闭。
具体描述如下:
1.客户端发送FIN报文段,半关闭了这个连接,服务器发送ACK报文段接受
半关闭。
2.服务器继续发送数据,而客户端只发送ACK确认,不再发送任何数据。
3.当服务器把所有数据都发送完毕时,就发送FIN报文段, 客户再发送ACK报文段,这样就关闭了TCP连接。
5.UDP协议介绍
UDP协议
无连接、不可靠的传输协议,也就是说发送端不关心发送的数据是否到达目标主机、数据是否出错等,收到的主机也不会告诉发送方是否收到了数据,它的可靠性有上层协议来保障。
花费的开销小
UDP报文的首部格式
- 源端口号:用来表示数据发送端的进程,和TCP的端口号类似。
- 目的端口号:用来表示数据接收端的进程,文件TCP的端口号类似。
- UDP长度:用来指出UDP的总长度,为首部加上数据
- 校验和:用来完成对UDP数据的差错检验,它是UDP协议提供的唯一的可靠机制。