传输层定义了主机应用程序之间端到端的连通性。传输层中最为常见的两个协议分别是传输控制协议TCP(Transmission Control Protocol)和用户数据报协议UDP(User Datagram Protocol)。
TCP
TCP是一种面向连接的传输层协议,提供可靠的传输服务。
TCP通过端口号区分不同网络服务
TCP允许一个主机同时运行多个应用进程。每台主机可以拥有多个应用端口,每对端口号,源和目标IP地址的组合唯一地标识了一个会话。端口分为知名端口和动态端口。有些网络服务会使用固定的端口,这类端口称为知名端口,端口号范围为0~1023。
比如:FTP,HTTP,Telnet,SNMP服务均使用知名端口。
动态端口范围1024~65535,这些端口号一般不会固定分配给某个服务,也就是说许多服务都可以使用这些端口。只要运行的程序向系统提出访问网络的申请,那么系统就可以从这些端口号中分配一个供该程序使用。
TCP通常使用IP作为网络层协议,这是TCP数据被封装在IP数据包内。TCP数据段由TCP Header(头部)和TCP Data(数据)组成。TCP最多可以有60个字节的头部,如果没有Options字段,正常的长度是20字节。
TCP建立连接的过程就是三次握手 断开就是四次挥手
UDP
当应用程序对传输的可靠性要求不高时,但是对传输速度和延迟要求较高时,可以用UDP协议来替代TCP协议在传输层控制数据的转发。UDP将数据从源端发送到目的端时,无需事先建立连接。UDP采用了简单,容易操作的机制在应用程序间传输数据,没有使用TCP中的确认技术或滑动窗口机制,因此UDP不能保证数据传输的可靠性,也无法避免接受到重复数据的情况。
UDP不提供重传机制,占用资源小,处理效率高。
一些时延敏感的流量,如语音,视频等,通常使用UDP作为传输层协议。
相对来说TCP会比较稳定,不会丢包;UDP会丢包,但是速度会比较快,用于视频和语音。
TCP/IP协议四层模型
数据先通过应用层,封装成不同的数据类型,然后传输时延等要求选择tcp或dup进行传输。然后网络层加上自己的ip和对方的ip,然后数据链路层加入下一跳的mac地址,比如中间要经过的不同路由器的mac地址。