first of all,了解一下TCP/IP协议族 TCP/IP协议族wiki
web
端口:浏览器
软件领域的端口通常指网络中面向链接服务(TCP)和无链接服务(UDP)的通讯协议端口,是一种抽象的软件结构, 包括一些数据结构和I/O(基本输入输出)缓冲区。 按端口号可分为3大类: (1)公认端口(Well Known Ports):从0到1023,它们紧密绑定(binding)于一些服务。一般这 些端口的通信 明确代表了某种服务的协议。例如:80端口实际上老是HTTP通信。 (2)注册端口(Registered Ports):从1024到49151。它们松散地绑定于一些服务。也就是说有 许多服务绑定于 这些端口,这些端口一样用于许多其它目的。例如:许多系统处理动态端口从1024左右 开始。 (3)动态和/或私有端口(Dynamic and/or Private Ports):从49152到65535。理论上,不该为 服务分配这些端 口。实际上,机器一般从1024起分配动态端口。但也有例外:SUN的RPC端口从32768开 始。
服务器:启动服务,通常服务都是经过某个应用层协议(TFTP,HTTP,SNMP,FTP,SMTP,DNS,Telnet,创建在TCP或UDP之上,详情参考本贴最上面到wiki连接)+某个端口来传输数据(经过bind方法来创建某个应用具体使用的传输协议和端口),服务启动以后就会经过这个监听这个端口来判断是否须要创建链接。
客户端:主动发送链接请求,主要须要包含(主机地址+传输协议+端口)等信息,表示要和某主机地址上的某端口用某传输协议创建链接。
服务器
以在浏览器输入http://localhost:8000/举个例子说明:网络
用户在浏览器输入以后点击肯定,浏览器解析url,向localhost对应的主机地址(通常会经过DNS解析到对应到IP地址)发送socket请求,要求和localhost上的8000端口创建http链接,localhost上的web应用从服务启动开始便会一直监听8000端口,当收到外部对8000端口发送的socket请求的时候,启动socket链接,创建通讯。
服务器监听到8000端口传来的IO流,根据http协议解析数据流,并转到服务端对应的处理模块,处理完成再经过reponse对象等传回客户端,造成客户能看到的页面
数据结构