基于tcp编写的服务器是否可以用循环的方式实现多个客户端的连

基于tcp编写的服务器是否可以用循环的方式实现多个客户端的连,第1张

基于tcp编写的服务器可以用循环的方式实现多个客户端的连接。根据查询相关公开资料,基于TCP的服务器可以用循环来实现多个客户端的连接,这样,当有新的客户端连接到服务器时,服务器就可以不停地检测连接,及时将新连接加入到客户端列表中。此外,服务器可以使用某种数据结构(如队列)来存储客户端的连接。

TCP / HTTP。

因特网上的服务器是基于TCP/IP协议

TCP/IP协议是一个协议集合。大家叫的时候方便说,所以统称为TCP/IP。TCP/IP协议族中有一个重要的概念是分层,TCP/IP协议按照层次分为以下四层。应用层、传输层、网络层、数据链路层。为什么要分层?这就如同邓小平1978年的大包干,责任到人。一个层只负责一个层次的问题,如果出问题了,和其他的层次无关,只要维护这个层次也就好了。其实编程语言里也能体现这个分层理论,即封转性、隔离。

Web服务基于HTTP协议(超文本传输协议)

超文本传输协议(HTTP)是一种为分布式,合作式,多媒体信息系统服务,面向应用层的协议。它是一种通用的,不分状态(stateless)的协议,除了诸如名称服务和分布对象管理系统之类的超文本用途外,还可以通过扩展它的请求方式,错误代码和报头来完成许多任务。HTTP的一个特点是数据表示方式的典型性和可协商性允许独立于传输数据而建立系统。在1990年WWW全球信息刚刚起步的时候HTTP就得到了应用。HTTP的第一个版本叫做HTTP/0.9,是一种为互联网原始数据传输服务的简单协议。由RFC 1945定义的HTTP/1.0进一步完善了这个协议。它允许消息以类似MIME的格式传送,包括有关数据传输的维护信息和关于请求/应答的句法修正。但是,HTTP/1.0没有充分考虑到分层代理,高速缓存的作用以及对稳定连接和虚拟主机的需求。并且随着不完善的进程应用的激增,HTTP/1.0迫切需要一个新的版本,以便使两个通信应用程序能够确定彼此的真实性能。

TCP/IP协议是一个协议集合,HTTP协议,IP协议,TCP协议,DNS协议等都属于TCP/IP协议。

TCP/IP协议是为了保证全球亿万台计算机能准确、无误的通信。

TCP/IP中分层是很重要的概念,每层完成不同的功能。分为应用层,传输层,网络层,数据链路层。分层的目的是为了层级之间的功能相对队里,互不影响。

TCP/IP通信数据流

    HTTP是基于TCP/IP协议的应用层协议,它不涉及数据包的传输,主要规定了客户端和服务器端的通信协议,默认端口是80

    IP协议的作用是将各种数据包准确无误的传递给对方,其中重要的条件是IP地址和MAC地址。由于IP地址是稀有资源,不可能每个人都有一个IP地址,所以我们通常的IP地址都是路由器给我们生成的IP地址,路由器里面会记录我们的MAC地址,而MAC地址是唯一的。

    IP实现的两个基本功能:寻址和分段

    寻址功能就是原地址和目标地址之间建立连接,需要使用ARP协议(Address Resolution Protocol),IP协议就是找到一条连接两台电脑的路径,从而完成数据的交互。

    地址解析协议,ARP协议,是根据IP地址获取物理地址的一个TCP/IP协议。IP间的通信依赖MAC地址。在进行中转时,会利用下一站中转设备的MAC地址来搜索下一个中转目标,这时就会采用ARP协议,根据通讯放的IP地址就可以反查出对应的MAC地址,从而进行精确的定位,完成寻址的功能。

    分段功能是为了适应不同网络对包的要求,对数据进行重新组装。

    TCP协议就是将数据包安全的给对方,IP协议是找到对方的详细地址,分工不同,互不冲突。

    TCP属于传输层,提供可靠的字节流服务。字节流类似于数据切割,为了方便传输,将大块数据分割成以报文段(segment)为单位的数据包进行管理。可靠的传输服务是指,能够把数据准确可靠的传给对方。TCP协议为了更容易的传输大数据才将数据进行分割,而且TCP协议能够确认数据最终是否送达对方。

    为了确保信息准确无误的送达,TCP采用了三次握手策略(three-way-handshaking)。TCP建立连接时需要三次握手,在关闭连接时还需要四次握手。 这部分占用了http请求过程的中大量时间,在高并发时,可以考虑优化这部分。

    和HTTP协议一样是处于应用层的服务,提供域名到IP地址之间的解析服务。

    1、可缓存:get请求能缓存,post请求不能;响应报文的状态码是可缓存的,包括:200, 203, 204, 206, 300, 301, 404, 405, 410, 414, and 501。

    2、get是获取资源,post用于传输实体主体。

    3、参数:get请求的参数在url里面,会被浏览器保存历史记录,post的请求数据在数据包里面,同时因为url只支持ASCII码,因此get的参数如果存在汉字就要先进性编码,post请求支持更多的编码类型且不对数据类型限制;post传输的数据比get的多;url的长度有限制,会影响get请求;

    4、安全的HTTP方法不会改变服务器状态,也就说是只读的。所以get是安全的,post不是安全的。

    5、幂等性:get是幂等的,post不是幂等的。

    6、XMLHttpRequest: 在使用XMLHttpRequest时,post请求发送时,浏览器会先发送header再发送Data;get请求header和data一起发送。

    XMLHttpRequest 是一个 API,它为客户端提供了在客户端和服务器之间传输数据的功能。它提供了一个通过 URL 来获取数据的简单方式,并且不会使整个页面刷新。这使得网页只更新一部分页面而不会打扰到用户。XMLHttpRequest 在 AJAX 中被大量使用。

        200 OK,表示从客户端发来的请求在服务器端被正确处理。

        204 No content,表示请求成功,但是想要报文不包含实体的主体部分。

        206 Partial Content ,进行范围请求。

        301 moved permanently 永久性重定向,表示自愿一杯分配了新的URL。

        302 found 临时性重定向,表示自愿临时被分配了新的URL。

        303 see other 表示资源存在着另一个URL,应使用GET方法获取资源。和 302 有着相同的功能,但是 303 明确要求客户端应该采用 GET 方法获取资源。

        注:虽然 HTTP 协议规定 301、302 状态下重定向时不允许把 POST 方法改成 GET 方法,但是大多数浏览器都会在 301、302 和 303 状态下的重定向把 POST 方法改成 GET 方法。

        304 not modified 表示服务器允许访问资源,但因发生请求未满足条件的情况。

        307 temporary redirect,临时重定向,和302含义相同。但是 307 要求浏览器不会把重定向请求的 POST 方法改成 GET 方法。

        400 bad request 请求报文存在语法错误

        401 unauthorized 表示没有权限

        403 forbidden 表示对请求资源的访问被服务器拒绝

        404 not found 表示在服务器上没有找到请求的资源

        500 internal sever error 表示服务器端在执行请求时错误

        503 service unavailable 表明服务器暂时处于超负载或正在停机维护,无法处理请求

    HTTPS是HTTP建立在SSL/TLS安全协议上的。

    在IOS中,客户端本地会存有CA证书,在HTTPS请求时,会首先向服务器获取公钥,获得公钥后会使用本地的CA证书验证公钥的正确性,然后通过正确的公钥加密信息发送给服务器,服务器会使用私钥解密信息。

    SSL/TSL握手阶段分为五步:

    HTTP和HTTPS的对比:

    HTTP:无状态,协议对客户端没有状态存储;无连接,每次请求都会和服务器重新建立连接;基于请求和响应,由客户端发起,服务端响应;简单快速,灵活;使用明文,请求和响应不会对通信方进行确认,无法保证数据的完整性。

    HTTPS:内容加密,采用混合加密技术,中间者无法直接查看明文内容;验证身份,通过证书认真客户端访问的是自己的服务器;保护数据完整性,放置传输的内容被中间人冒充或篡改。


欢迎分享,转载请注明来源:夏雨云

原文地址:https://www.xiayuyun.com/zonghe/286772.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2023-04-22
下一篇2023-04-22

发表评论

登录后才能评论

评论列表(0条)

    保存