HTTP/TCP/UDP

作者: alsoalso | 来源:发表于2018-03-06 10:10 被阅读0次

    HTTP/TCP/UDP 都是通信协议,即通信时所遵守的规则,只有双方按照这个规则“说话”,对方才能理解或为之服务。

    TCP/HTTP/UDP三者的关系

    TCP/IP是个协议组,可分为四个层次:网络接口层、网络层、传输层和应用层。

    在网络层有IP协议、ICMP协议、ARP协议、RARP协议和BOOTP协议。

    在传输层中有TCP协议与UDP协议。

    在应用层有FTP、HTTP、TELNET、SMTP、DNS等协议。

    什么是HTTP协议

    HTTP全称是HyperText Transfer Protocal,即:超文本传输协议,HTTP连接最显著的特点是客户端发送的每次请求都需要服务器回送响应,在请求结束后,会主动释放连接。从建立连接到关闭连接的过程称为“一次连接”。

    HTTPS通信原理

    HTTPS全称是Secure Hypertext Transfer Protocol安全超文本传输协议,它是一个安全通信通道。

    HTTPS是HTTP over SSL/TLS,HTTP是应用层协议,TCP是传输层协议,在应用层和传输层之间,增加了一个安全套接层SSL/TLS:SSL (Secure Socket Layer,安全套接字层)、TLS (Transport Layer Security,传输层安全协议)、SSL使用40 位关键字作为RC4流加密算法。

    HTTP是应用层协议,当你上网浏览网页的时候,浏览器和Web服务器之间就会通过HTTP在Internet上进行数据的发送和接收。HTTP是一个基于请求/响应模式的、无状态的协议。即我们通常所说的Request/Response。

    Https的作用

    内容加密建立一个信息安全通道,来保证数据传输的安全。

    身份认证确认网站的真实性。

    数据完整性防止内容被第三方冒充或者篡改。

    5.HTTP本身就是一个协议,是从Web服务器传输超文本到本地浏览器的传送协议。

    Https和Http的区别

    https协议需要到CA申请证书。

    http是超文本传输协议,信息是明文传输;https 则是具有安全性的ssl加密传输协议。

    http和https使用的是完全不同的连接方式,用的端口也不一样,前者是80,后者是443。

    http的连接很简单,是无状态的;HTTPS协议是由SSL+HTTP协议构建的可进行加密传输、身份认证的网络协议,比http协议安全。

    http默认使用80端口,https默认使用443端口。

    TCP:传送控制协议(Transmission Control Protocol)

    UDP:用户数据报协议(User Datagram Protocol)

    TCP与UDP基本区别

    基于连接与无连接;

    TCP要求系统资源较多,UDP较少;

    UDP程序结构较简单;

    流模式(TCP)与数据报模式(UDP);

    TCP保证数据正确性,UDP可能丢包;

    TCP保证数据顺序,UDP不保证;

    TCP与UDP区别总结

    TCP面向连接(如打电话要先拨号建立连接);UDP是无连接的,即发送数据之前不需要建立连接

    TCP提供可靠的服务。也就是说,通过TCP连接传送的数据,无差错,不丢失,不重复,且按序到达;UDP尽最大努力交付,即不保证可靠交付

    TCP面向字节流,实际上是TCP把数据看成一连串无结构的字节流;UDP是面向报文的UDP没有拥塞控制,因此网络出现拥塞不会使源主机的发送速率降低(对实时应用很有用,如IP电话,实时视频会议等)

    每一条TCP连接只能是点到点的;UDP支持一对一,一对多,多对一和多对多的交互通信

    TCP首部开销20字节;UDP的首部开销小,只有8个字节6、TCP的逻辑通信信道是全双工的可靠信道,UDP则是不可靠信道

    socket: 是为了实现以上的通信过程而建立起来的通信管道,其真实的代表是客户端和服务器端的一个通信进程,双方进程通过socket进行通信,而通信的规则采用指定的协议。

    socket只是一种连接模式,不是协议,socket是对TCP/IP协议的封装,Socket本身并不是协议,而是一个调用接口(API),通过Socket,我们才能使用TCP/IP协议。

    tcp/udp是两个最基本的协议,很多其它协议都是基于这两个协议,如http就是基于tcp的,用socket可以创建tcp连接,也可以创建udp连接,这意味着,用socket可以创建任何协议的连接,因为其它协议都是基于此的。

    基于Socket传输的特点

    优点

     1)  传输数据为字节级,传输数据可自定义,数据量小(对于手机应用讲:费用低)。

     2)传输数据时间短,性能高。

     3)适合于客户端和服务器端之间信息实时交互。

     4)可以加密,数据安全性强。

       缺点:

    1)需对传输的数据进行解析,转化成应用级的数据。

    2)对开发人员的开发水平要求高。

    3)相对于Http协议传输,增加了开发量。

    基于http协议的传输特点

    优点:

    1)基于应用级的接口使用方便。

    2)程序员开发水平要求不高,容错性强。

    缺点:

    1)传输速度慢,数据包大(Http协议中包含辅助应用信息)。

    2)如实时交互,服务器性能压力大。

    3)数据传输安全性差。

    基于Socket传输适用范围

    基于Socket传输方式适合于对传输速度,安全性,实时交互,费用等要求高的应用中,如网络游戏,手机应用,银行内部交互等。

    基于Http协议传输的适用范围

    基于http协议传输方式适合于对传输速度,安全性,要求不是很高,且需要快速开发的应用,如公司OA系统,互联网服务等。

    Request的消息

    Accept:浏览器端可以接受的媒体类型,通配符 * 代表任意类型。

    Referer:提供了Request的上下文信息的服务器,告诉服务器我是从哪个链接过来的。

    Accept-Language:浏览器申明自己接收的语言。

    Content-Type:

    application/x-www-form-urlencoded:数据被编码为名称/值对。这是标准的编码格式。

    multipart/form-data: 数据被编码为一条消息,页上的每个控件对应消息中的一个部分。

    text/plain: 数据以纯文本形式(text/json/xml/html)进行编码,其中不含任何控件或格式字符。

    Accept-Encoding:浏览器申明自己接收的编码方法,通常指定压缩方法,是否支持压缩,支持什么压缩方法。

    User-Agent:告诉HTTP服务器, 客户端使用的操作系统和浏览器的名称和版本。

    Connection:keep-alive 当一个网页打开完成后,客户端和服务器之间用于传输HTTP数据的TCP连接不会关闭,如果客户端再次访问这个服务器上的网页,会继续使用这一条已经建立的连接;close 代表一个Request完成后,客户端和服务器之间用于传输HTTP数据的TCP连接会关闭, 当客户端再次发送Request,需要重新建立TCP连接。

    Content-Length:发送给HTTP服务器数据的长度。

    Host:请求报头域主要用于指定被请求资源的Internet主机和端口号,通常从HTTP URL中提取出来的。

    Pragma:防止页面被缓存, 在HTTP/1.1版本中,它和Cache-Control:no-cache作用一模一样。

    Cookie:将cookie的值发送给HTTP服务器。

    Accept-Charset:浏览器申明自己接收的字符集。

    Response消息

    Cache-Control:指定Response-Request遵循的缓存机制。

    Content-Type:WEB服务器告诉浏览器自己响应的对象的类型和字符集。

    Expires: 浏览器会在指定过期时间内使用本地缓存。

    Last-Modified: 用于指示资源的最后修改日期和时间。

    X-AspNet-Version:如果网站是用ASP.NET开发的,这个header用来表示ASP.NET的版本。

    X-Powered-By:表示网站是用什么技术开发的。

    Connection:keep-alive 当一个网页打开完成后,客户端和服务器之间用于传输HTTP数据的TCP连接不会关闭,如果客户端再次访问这个服务器上的网页,会继续使用这一条已经建立的连接; close 代表一个Request完成后,客户端和服务器之间用于传输HTTP数据的TCP连接会关闭, 当客户端再次发送Request,需要重新建立TCP连接。

    Content-Length:指明实体正文的长度,以字节方式存储的十进制数字来表示。在数据下行的过程中,Content-Length的方式要预先在服务器中缓存所有数据,然后所有数据再一股脑儿地发给客户端。

    Date: 生成消息的具体时间和日期。

    HTTP协议之GET和POST

    HTTP协议定义了很多与服务器交互的方法,最基本的有4种,分别是GET、POST、PUT、DELETE。

     一个URL地址用于描述一个网络上的资源,而HTTP中的GET, POST, PUT, DELETE就对应着对这个资源的查,改,增,删4个操作。 

    最常见的就是GET和POST了。GET一般用于获取/查询资源信息,而POST一般用于更新资源信息。

    GET和POST的区别

    GET提交的数据会放在URL之后,以?分割URL和传输数据,参数之间以&相连,如EditPosts.aspx?name=test1&id=123456. POST方法是把提交的数据放在HTTP包的Body中。

    GET提交的数据大小有限制(因为浏览器对URL的长度有限制),而POST方法提交的数据没有限制。

    GET方式需要使用Request.QueryString来取得变量的值,而POST方式通过Request.Form来获取变量的值,也就是说GET是通过地址栏来传值,而POST是通过提交表单来传值。

    GET方式提交数据,会带来安全问题,比如一个登录页面,通过GET方式提交数据时,用户名和密码将出现在URL上,如果页面可以被缓存或者其他人可以访问这台机器,就可以从历史记录获得该用户的账号和密码。

    相关文章

      网友评论

        本文标题:HTTP/TCP/UDP

        本文链接:https://www.haomeiwen.com/subject/ephlfftx.html