传输层
传输层主要是为运行在不同主机上的应用进程提供直接的通信服务(端到端的通信)。
通信单元为:报文段
端口为应用层的各个应用进程的数据通过这个“门”向下传递给传输层。
- 服务端使用的端口号:(1)熟知端口号:0~1023。分配给TCP/IP最重要的一些应用进程。
(2)登记端口号:1024~49151。给没有熟知端口号的应用程序使用
应用进程 | FTP | TELNET | SMTP | DNS | TFTP | HTTP | SNMP |
---|---|---|---|---|---|---|---|
端口号 | 21 | 23 | 25 | 53 | 69 | 80 | 161 |
2.客户端使用的端口号:49152~65535。也叫短暂端口号。是在客户端进程运行成功后动态选择的。
端口号具有本地意义,即端口号只是标志本机计算机应用层的各个进程。在互联网中,不同主机的相同端口号没有联系。
套接字(socket):在网络中通过IP来唯一标识一个主机。通过端口号来标识一台主机中的不同进程。所以网络连接出现socket套接字来标识一个主机上的某进程。
套接字(socket)=(Host IP,port)
UDP协议
16位UDP长度:UDP首部+UDP数据
特点1:无连接服务
无连接:知道对端的IP和端口号就直接进行传输,不需要建立连接。
全双工:UDP的socket既能读,也能写
无连接服务和面向连接服务
面向连接和无连接的区别在于通信双方通信之间,是否需要先建立连接。
面向连接:在通信过程中,整个连接的过程一直被监控和管理,通信结束之后,释放这个连接。
无连接服务:两个实体之间需要需要通信时,直接将信息发到“网络”上,让该信息在网上尽力传输到目的方。
UDP协议是无连接的不可靠传输机制,它在IP之上仅仅提供了多路复用、数据差错检查服务。
由于UDP服务不需要建立连接,执行速度快,实时性号,只用于小文件的传输协议。(DNS、SNMP、RTP、TFTP)
特点2:不可靠
没有确认机制,没有重传机制;如果因为网络故障该段无法发送到对方,UDP协议也不会给应用层发挥任何错误信息。
特点3:面向数据报
不能够灵活的控制读写数据的次数和数量。
应用层交给UDP多长的报文,UDP原样发送,既不会拆分,也不会合并,交付时一次交付一整个报文。
特点4、5:无拥塞控制、支持多种通信
网络的拥塞不会使得源主机的发送速率降低,允许丢失一些数据。
支持一对一、一对多、多对一和多对多的交互通信。
UDP协议的一些问题
1、UDP和TCP的简单介绍
UDP是一个简单的面向数据报的运输层协议:进程的每个输出操作都正好产生一个UDP数据报,并组装成一份待发送的IP数据报。
TCP是面向流字符,应用程序产生的全体数据与真正发送的单个IP数据报可能没什么联系。
2、为什么要加有伪首部?
目的是让UDP两次检查数据是否到达正确的目的地。
IP接收正确的目的地址,传送到正确的上层程序。
所有伪首部包括:源IP地址、目的IP地址、0、协议号、UDP长度
TCP协议
- 源端口号
- 目的端口号
- 序列号(seq)
- 确认号(ack):期望收到的数据的开始序列号。也即已经收到的数据的字节长度+1。
- 如果含有同步化标识(SYN),则此为最初的序列号;第一个数据比特的序列号为本序列号+1
- 如果没有SYN,则此为第一个数据比特的序列码。