一个重要概念:Socket与TCP、UDP之间的关系?
SOCKET是API,而TCP/UPD是通信协议,即:SOCKET是TCP、UDP的实现方式,用SOCKET编程可以实现TCP、UDP的通信。
SOCKET就像一个管子,连接两端。而TCP、UDP就像管子中的东西。是液体还是气体。也就是传送的协议
语言表达的例子:
用SOCKET实现TCP(或者UDP)通信。 (相反,TCP或者UDP通信也可以不使用SOCKET实现)
一、TCP协议(传输层)
二、UDP协议(传输层)
三、Http协议(应用层)
a)关于端口
Server端:强制使用的标准端口 80;还可绑定更多其它端口,eg:8000、8080等
Client端:既可以使用固定的80端口,也可以任意指定
说明:1024以内的端口号已经分配给标准服务,而且是强制性的
1024以上的端口,可任意指定(部分也有习惯性含义,但不强制,eg:8080分配给http协议)
b)应用程序和端口号之间的关系
一对多
一个应用程序可以绑定多个端口号,但是每个端口号只能属于一个应用程序;
端口号一旦与某个应用程序绑定,则表示:所有连接到本端口的包都交个绑定的应用程序处理
c)多个客户端连接的情况
每进来一个客户端就产生一个新的套接字,每个套接字代表一个客户端的连接,它们都使用80端口
d)浏览器通过http协议访问页面的流程
1) 浏览器向DNS请求到域名对应的IP
2) 通过IP+80端口,浏览器与服务器建立TCP连接
3)浏览器发出http请求报文(eg: GET /chn/yxsz/index.htm)
4)服务器发回http响应报文(eg: index.htm文件)
5)释放TCP连接
注:由上可知,http实际上是将TCP作为其传输层协议
四、FTP协议(应用层)