网络层可以把数据从一个主机传送到另一个主机,但是没有和进程建立联系。传输层就是讲进程和收到的数据联系到一起,使数据能够为应用服务。所以说传输层是主机才有的层次!简单的说传输层就是提供进程和进程之间的逻辑通信。
传输层中有两个好兄弟分别是大哥TCP和二哥UDP,他们之间的对比如表一所示:
表一
TCP是面向连接的传输层协议。
每一条TCP连接只能有两个端点,每一条TCP连接只能是点对点的。
TCP提供可靠交付的服务,无差错、不丢失、不重复、按序到达。可靠有序,不丢不重
TCP提供全双工通信。即数据可在同一时间双向传输,TCP报文段封装在IP数据报中。
源端口号(16) | 目的端口号(16) | |||||||||||
序号(32) | ||||||||||||
确认号(32) | ||||||||||||
首部长度(4) | 保留(6) | U R G |
A C K |
P S H |
R S T |
S Y N |
F I N |
窗口大小(16) | ||||
校验和(16) | 紧急指针(16) | |||||||||||
选项 |
表二
序号:发送端为每个字节进行编号,便于接收端正确重组
确认号:用于确认发送端的信息
首部长度:用它可以确定TCP首部数据结构的字节长度。一般情况下TCP首部是20字节,但首部长度最大可用扩展为60字节。
控制位:
URG:紧急位,紧急指针有效位
ACK:确认为,ps:只有当ACK=1时,确认序列号字段才有效:当ACK=0时,确认号字段无效。
PSH:紧迫位。标志位为1时,要求接收方尽快将数据段送达应用层。
RST:重置位。当RST值为1时,通知重新建立TCP连接。(相当于重启)
SYN:同步位,同步序号位,TCP需要建立连接时将这个值设置为1.
FIN:断开位。当TCP完成数据传输需要断开连接,提出断开连接的一方将这个值设置为1.
窗口大小:用于说明本地可接收数据段的数目,窗口大小是可变的。
校验和:用来做差控制(用来校验数据,它会检验发送和到达目的的数据,如果两次数据一样就可以反之就丢弃)。
紧急指针:这个和URG一起使用,但是要URG=1时才有效。
选项:在TCP首部可以有多达40个字节的可选信息。(跟首部长度有关,首部长度想到达多少个字节,就到达多少个字节)。
图一
TCP建立三次握手的具体过程到底是什么样子的呢?
TCP是面向连接的,就是说每次发送数据之前都要和对方一起建立一条可靠的连接,这个建立连接的过程分为3个步骤,这就叫做三次握手。
第一步:当客户端发送请求连接的报文时:seq序列号=x(x为随机) SYN=1(表示发送连接请求)
第二部:服务器端收到客户端发来的请求报文后,同意建立连接,则向客户端发送确认报文:seq序列号=y(这时服务器也会产生一个序列y,和客户端的序号不相关:ACK确认号=x+1(seq序列号x+1,表示确认收到了客户端的请求) ACK=1(表示这时条确认请求) SYN=1(同时也发送了一个建立连接的请求)
第三步:客户端进程收到服务器进程的确认后,还要向服务端给出确认,然后连接成功建立:seq序列号=x+1(这时客户端的序号为1) ACK确认号=y+1(表示确认收到了服务器的连接请求)ACK=1(表示这是确认报文)
TCP断开连接的过程称之为四次挥手,大致过程如图二所示:
图二
简单来说就是pc1要跟pc2断开连接,那么pc1向pc2发送断开连接的请求。pc2收到请求并进行确认。同理pc2也要发送一个断开连接的请求给pc1,pc1收到并回应确认识然后就正式断开连接了。
准确来说:
第一次挥手:Client发送Fin+Acknowledgement 给Server端,表示自己要断开连接,这个时候client端已经没有数据要发送了。
第二次挥手:Server接收到client发送的断开请求连接,那么这个时候Server需要发送一个Acknowledaement=1用于确定客户请求断开的信息成功接收了;有时候这个过程也会和第三次握手进行合并,就像上面展示的一样。
第三次挥手:Server如果所有的数据已经接收完毕。这个时候就会发送一个Fin=1,而Acknowledgement=0用于表示Server端已经没有数据要发送了。需要关闭连接。
第四次挥手:Client端需要发送一个Acknowledgement=1表示这个Client接收到了Server的关闭请求信息,这样一来双方的就都关闭了
UDP概述:UDP在ip数1据服务之上增加了很少功能,即复用分用和差错检测功能。
1.UDP是无连接的减少开销和发送数据之前的延时
2.UDP使用最大努力交付,即不保证可靠交付。
3.UDP是面向报文的,适合一次传输少量数据的网络应用。
4.UDP无拥塞控制,适合很多实时应用。
UDP报文的首部格式如下表三所示:
源端口号(16) | 目的端口号(16) |
UDP长度(16) | UDP校验和(16) |
UDP长度:用来指出UDP的总长度,为首部加上数据
校验和:用来完成对UDP数据的差错检验,它是UDP协议提供的唯一的可靠机制
TCP常用协议及端口:21-FTP-文件传输协议端口
22-Ssh-安全Shell服务
23-Telnet-telnet服务
25-SMTP-简单邮件传输协议
37-TIME-时间协议
80-HTTP-超文本协议
110-POP3-用于邮件接收
53-DNS-域名解析协议
69-TFTP-小文件传输协议
443-HTTPS-安全超文本传输协议
UDP常用协议及端口:161-SNMP-简单网络管理协议
69-TFTP-简单文件传输协议
53-DNS-域名解析协议
67-BOOTPS/DHCP-动态主机配置协议