运输层TCP和UDP
运输层直接为应用进程的逻辑通信提供服务(逻辑通信,是为了方便研究虚拟的)
运输层要识别不同的应用层端口,不同操作系统系统使用不同格式的进程标识符。所以统一使用TCP/IP体系的应用进程进行标识。利用端口号区分应用层的不同应用进程。
端口号 使用16比特表示 0-65535
熟知端口号:0-1023.IANA把这些端口派给TCP/IP体系中最重要的协议,如FTP: 21/20,HTTP:80 HTTPS:443, DNS:53
登录端口号:1024-40151,给没有熟知端口号的应用程序使用,但是必须在IANA登记防止重复。 如Microsoft PDP微软远程桌面使用端口3389
短暂端口号:40152-65535,留给客户进程选择暂时使用。
端口号只具有本地意义,标识本计算机应用层中的各进程,不同计算机端口号没有联系
不同的应用选择UDP或者TCP协议进行封装,运输层通过端口号区分不同应用进程。在网络层都需要用IP协议封装成IP数据报(叫做IP复用)IP数据报中首部协议字段的值区别不同的运输层封装的报文,协议字段17是UDP,协议字段6是TCP。
接收方根据端口号的不同交个不同的应用进程
常用端口号
web网络请求
web服务器记录了网页域名,DNS服务器记录域名对应的端口号
当在页面输入url访问网站时,首先用UDP封装网络请求发送给DNS服务器,拿到该域名的IP地址, 然后通过该IP地址发送给web服务器请求网页内容(用TCP封装)
TCP和UDP对比
UDP 可以随时发送数据,所以它是无连接的
TCP 需要三次握手建立连接,四次挥手结束连接,它是面向连接的
UDP:支持单播,多播,广播,就是支持一对一,一对多,一对全
TCP:支持单播,一对一通信
UDP 对应用进程的报文既不合并也不拆分,保留报文的边界直接给报文加首部
TCP 把应用层传下来的报文看作一个无结构的字节流,并提取部分字节流加首部发送,接收方最 后把收到的字节流还原成有意义的数据
UDP 是不可靠的传输,会发生丢失和误码情况,出现了直接丢弃不做处理,但是速度快,可以做实时传输应用
TCP 是可靠传输,不会出现误码、丢失等情况,但是速度慢。
UDP 只添加了区分应用进程的端口,所以首部比较简单,8个字节
TCP 要实现可靠传输、流量控制、拥塞控制等服务,所以体积比较,20字节