![a4fbf5d520723268568324d287e893d7.png](https://i-blog.csdnimg.cn/blog_migrate/d402cb9db9e7a2f7f77db9a19f4a9ee1.jpeg)
序言
在开始介绍传输层之前,我们首先再来回顾下TCP/IP协议栈。TCP/IP中有两个具有代表性的传输层协议,它们分别是TCP和UDP。TCP提供可靠的通信传输,而UDP则常被用于让广播和细节控制交给应用的通信传输。
![ab7d1c08621f1ab0788b62104bf54e38.png](https://i-blog.csdnimg.cn/blog_migrate/61144c0459f06463043cf82d7df3f459.jpeg)
数据链路和IP中的地址,分别指的是MAC地址和IP地址。前者用来识别同一链路中不同的计算机,后者用来识别TCP/IP网络中互连的主机和路由器。
同样,传输层为了识别自己所传输的数据包究竟应该发给哪个应用,也需要设定这样一个编号。那就是端口号。端口号用来识别同一台计算机中进行通信的不同应用程序。因此,它也被称为程序地址。
分配
在实际进行通信时,要事先分配端口号。分配端口号的方法分为两种:
- 标准既定的端口号(静态分配端口号)
它是指每个应用程序都有其指定的端口号。但并不是说可以随意使用任何一个端口号。每个端口号都有其对应的使用目的。
端口号由其使用的传输层协议决定。因此,不同的传输协议可以使用相同的端口号。
Service Name and Transport Protocol Port Number Registrywww.iana.org2. 动态分配端口号
动态分配的端口号取值范围在49152到65535之间。
练习
下面这个示例是在Linux平台编写的客户端和服务端通过socket的通信示例:
TCP/IP:Tutorialzhuanlan.zhihu.com![36d84a7a0e1d19636742b74a3e6a4137.png](https://i-blog.csdnimg.cn/blog_migrate/9447a622badf1148d00b134da6745ce1.jpeg)