传输层定义了主机应用程序之间端到端的连通性。
端口---port[逻辑端口]
基于应用级别的互访,就是端口到端口的互访
传输层中最为常见的连 个协议分为:
传输控制协议TCP(Transmission Control Protocol):面向连接的协议
用户数据包协议UDP(User Datagram Protocol):面向无连接的协议
传输层----0-65535【端口范围】
0----->1023 端口:知名端口,提前保留出来的端口
TCP协议:FTP[20/21],SSH[22],Telent[23],HTTP[80],HTTPS[443]
UDP协议:DNS[53],DHCP[67/68]
---------------------------------
连接:正式发送数据之前,提前建立好一种虚拟的“点到点”式的连接---单播的模式
TCP--1.只能适用于单播通信
2.可以基于建立好的连接,灵活的对接下来的数据传递 进行控制
3.无法很好的满足即时性的业务要求,传递一些文件,稳定性支持性很好
4.自带分片功能,能够感知上层数据大小,网络层不做分片
IP Header | TCP Header | Data |
Source Port | Destination Port |
Sequence Number(序列号) | |
Acknowledge Number | |
Header length [URG ACK PSH RST SYN FIN] | Window |
Checksum | Urgent Pointer |
Options | Padding |
UDP--1.保证数据进行传输,无法对传递的数据进行控制,如果相对数据做控制,此时借用应用层实现
2.可以很好的满足即时性的要求,对时间要求比较高
3.对于上层传递的数据‘全盘接收’[没有分片机制],在网络层进行分片
使用UDP传输数据时,由应用程序根据需要提供报文到达确认、排序、流量控制等功能
--------------------------------
TCP建立连接的过程:(连接建立完毕之前,不会传递数据)
三次握手,四次挥手
1. 主机-->服务器 Send SYN(seq=a,SYN)
--SYN置为1
2.服务器-->主机 Send SYN,ACK(seq=b,ack=a+1,SYN,ACK)
--通过确认号ACK,确认已收到对方传来的报文
--通过SYN,与对方建立连接
--再次发送报文从a+1开始发
3.主机-->服务器Send ACK(seq=a+1,ack=b+1,ACK)
----seq=a+1,已经收到服务器发的数据
----再次发送报文从b+1开始发
-------------------------------------------------------------------
TCP关闭连接:
1.主机-->服务器 FIN,ACK(seq=a,ack=b)--FIN置为1
2.服务器-->主机ACK(seq=b,ack=a+1)
3.服务器-->主机 FIN , ACK(seq=b,ack=a+1)
4.主机-->服务器 ACK(seq=a+1,ack=b+1)
主机在关闭连接之前,要确认收到来自对方的ACK
------------------------------------------------------------------------------
确认机制
1.三次握手中,小ack=对方seq+1
2.数据传输时,小ack=对方所传递的数据的最大值+1
-----------------------------------------------------------------------------
TCP流量控制