HTTP协议简介

        目前大多数网络协议为CS架构,其中<客户端Client,简称 C><服务端Server,简称 S>,在实际通信中,一般由客户端发起一个请求,比如访问一个网页,或者请求获取一个文件,或者更广义地请求任何客户需要的信息,服务端在收到请求后要针对请求做出相应的响应,比如返回用户所需要的网页。

        一般用户的手机电脑充当客户端,而响应来之服务端,比如当在手机浏览器输入www.baidu.com时,手机会向百度公司的电脑发起连接请求,百度公司的电脑会服务我的手机的请求,即充当了服务器的角色,在真实情况中,一台服务器会并发的服务成千上万个客户端发来的请求,高高在上,所以称客户端发到服务器的数据为上行数据,英文缩写为C2S,即Client to Server,服务器发到客户端的数据为下行数据,英文缩写为S2C,即Server to Client。

        每台联网的手机或电脑都有一个IP地址,用来唯一的标识一台主机,而每个手机或电脑不止运行一个网络服务,比如我们同时既访问baidu,又访问taobao,需要区分同一台手机上不同的服务就引进端口(Port)的概念,即在每个程序启动的时候声明一个端口号,当一个数据报文发出或来到我们手机的时候,根据报文里的端口信息操作系统就会把baidu的给baidu,taobao的给taobao,而不会相反而造成混乱。IP地址就像现实中的家庭住址,而端口号就像家庭成员的姓名。所以所有的网络通信的数据报文里必须同时有IP和Port,没有IP就找不到对方的手机电脑,而没有端口即使找到对方的手机也无济于事,因为不知道到底手机上哪个应用在和我通信。

        客户端只要有请求就会向服务器发信息,当没请求的时候就会退出程序以节约内存,电力等等。而服务器不同,它要为成千上万台手机电脑服务,它不能预判什么时候会有一个请求到来,所以服务器程序必须永远在线启动,否则会丢失用户,效益。

        这时会出现一个问题。上文第二段说当客户端有任何请求时,它就会向服务器发送信息,上文第三段提到每次通信都需要IP和Port,

且每个程序启动时都要注册一个端口号。服务器程序是一个程序,所以服务器程序也要注册一个端口号,而客户端向服务器发送信息时,数据包里必须写上自己的IP和Port,如果不写,服务器的回应就找不到客户端,还需要写上服务器的IP和Port,如果不写,这个请求就找不到服务器,客户端当然知道自己的IP,而Port可以自己定义,服务器的IP可以通过DNS协议查询,而服务器的Port却是不知道的。默认端口解决了这个问题,就是每种协议注册一个默认端口,客户端根据它想要与之通信的服务器协议来确定服务器端口号,而这些服务器的默认的端口号为了好记一般都比较小,例如DNS默认端口为53,HTTP默认端口为80,而客户端的端口是自定义的,一般都比较大。

        所以在一个数据包中,如果源端口比目的端口大,则此条数据是由客户端到服务器的,即C2S<上行>,如果源端口比目的端口小,则为服务器到客户端的,即S2C<下行>。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值