ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

WEB - 协议:TCP/IP、HTTP/HTTPS

2020-02-20 20:58:34  阅读:182  来源: 互联网

标签:WEB HTTP 请求 协议 IP TCP 服务器 连接


网络协议(NetworkProtocol):是计算机网络中为进行数据交换而建立的规则、标准或约定的集合;

TCP/IP:Transmission Control Protocol/Internet Protocol(传输控制协议/因特网互联协议)

IP提供主机与主机间的通信

TCP在主机通信的基础上,完成两个主机上进程与进程的通信

IP协议是网络层的协议,它是为了实现相互连接的计算机进行通信设计的协议,它实现了自动路由功能,即自动寻径功能。

TCP是传输层的协议,它向下屏蔽IP协议的不可靠传输的特性,向上提供一种面向连接的、可靠的点到点数据传输。TCP在可靠性和安全性上等更有保证。UDP也是传输层协议,它提供的是一种非面向连接的,不可靠的数据传输,这主要是有些应用需要更快速的数据传输,比如局域网内的大多数文件传输都是基于UDP的。UDP在传输速率上更快,开销更小。

TCP/IP协议的核心是TCP、UDP和IP协议;

TCP/IP是分组交换协议,信息被分为多个分组在网上传输,到达接收方后再把这些分组组合成原来的信息

²  STMP协议:SMTP是一种提供可靠且有效的电子邮件传输的协议。SMTP是建立在FTP文件传输服务上的一种邮件服务,主要用于系统之间的邮件信息传递,并提供有关来信的通知。

²  POP3:全名为“PostOfficeProtocol-Version3”,即“邮局协议版本3”。是TCP/IP协议族中的一员。本协议主要用于支持使用客户端远程管理在服务器上的电子邮件。提供了SSL加密的POP3协议被称为POP3S。

²  ICMP是(Internet Control Message Protocol)Internet控制报文协议。它是TCP/IP协议簇的一个子协议,用于在IP主机、路由器之间传递控制消息。属于网络层协议;控制消息是指网络通不通、主机是否可达、路由是否可用等网络本身的消息。这些控制消息虽然并不传输用户数据,但是对于用户数据的传递起着重要的作用。

端口号:为了标识数据属于那个进程,把需要进行TCP通信的进程分配一个唯一的数字来标识它,这个数字就是我们常说的端口号。端口和对应的服务:

21:FTP(文件传输协议)、       

22:SSH、

23:Telnet(远程登录)服务、    

25:SMTP(简单邮件传输协议)

53:DNS域名服务器、           

80:HTTP超文本传输协议

110:POP3邮件协议3、          

443:HTTPS、          

1080:Sockets

1521:Oracle数据库默认接口、   

3306:MySQL服务

TCP的三次握手,四次挥手;

三次握手:

第一次握手:客户端发送syn包(syn=x)到服务器,并进入SYN_SEND状态,等待服务器确认;

第二次握手:服务器收到syn包,必须确认客户的SYN(ack=x+1),同时自己也发送一个SYN包(syn=y),即SYN+ACK包,此时服务器进入SYN_RECV状态;

第三次握手:客户端收到服务器的SYN+ACK包,向服务器发送确认包ACK(ack=y+1),此包发送完毕,客户端和服务器进入ESTABLISHED状态,完成三次握手。

握手过程中传送的包里不包含数据,三次握手完毕后,客户端与服务器才正式开始传送数据。理想状态下,TCP连接一旦建立,在通信双方中的任何一方主动关闭连接之前,TCP连接都将被一直保持下去。

确认号:其数值等于发送方的发送序号+1(即接收方期望接收的下一个序列号)。

四次挥手:

与建立连接的“三次握手”类似,断开一个TCP连接则需要“四次挥手”。

第一次挥手:主动关闭方发送一个FIN,用来关闭主动方到被动关闭方的数据传送,也就是主动关闭方告诉被动关闭方:我已经不会再给你发数据了(当然,在fin包之前发送出去的数据,如果没有收到对应的ack确认报文,主动关闭方依然会重发这些数据),但是,此时主动关闭方还可以接受数据。

第二次挥手:被动关闭方收到FIN包后,发送一个ACK给对方,确认序号为收到序号+1(与SYN相同,一个FIN占用一个序号)。
第三次挥手:被动关闭方发送一个FIN,用来关闭被动关闭方到主动关闭方的数据传送,也就是告诉主动关闭方,我的数据也发送完了,不会再给你发数据了。
第四次挥手:主动关闭方收到FIN后,发送一个ACK给被动关闭方,确认序号为收到序号+1,至此,完成四次挥手。

TCP的四次挥手过程(简言之):主动关闭方向被动关闭方发送不会再给你发数据了的信息;被动关闭方对收到的主动关闭方的报文段进行确认;被动关闭方向主动关闭方发送我也不会再给你发数据了的信息;主动关闭方再次对被动关闭方的确认进行确认。

TCP和UDP的区别

(1)UDP

面向无连接的通讯协议,UDP数据包括目的端口号和源端口号信息。

优点:UDP速度快、操作简单、要求系统资源较少,由于通讯不需要连接,可以实现广播发送。

缺点:UDP传送数据前并不与对方建立连接,对接收到的数据也不发送确认信号,发送端不知道数据是否会正确接收,也不重复发送,不可靠。

(2)TCP

是面向连接的通讯协议,通过三次握手建立连接,通讯完成时四次挥手。

优点:TCP在数据传递时,有确认、窗口、重传、阻塞等控制机制,能保证数据正确性,较为可靠。

缺点:TCP相对于UDP速度慢一点,要求系统资源较多

3)区别:TCPUDP

1.TCP注重数据安全性,UDP数据传输快,因为不需要连接等待,少了许多操作,但是其安全性却一般;

2. TCP传输单位称为TCP报文段,UDP传输单位称为用户数据报。

3.TCP提供面向连接的、可靠的数据流传输,而UDP提供的是非面向连接的、不可靠的数据流传输。

4)为何tcp协议的通信比基于udp协议的通信更可靠?

tcp:可靠对方给了确认收到信息,才发下一个,如果没收到确认信息就重发;

udp:不可靠一直发数据,不需要对方回应;

HTTP:HyperText Transfer Protocol(超文本传输协议)

HTTP是一个应用层协议,由请求和响应构成,是一个标准的客户端服务器模型。

HTTP是一个无状态的协议。端口号为80,基于TCP协议封装,包括请求(request)和响应(response);

HTTP是因特网上应用最为广泛的一种网络传输协议,所有的WWW文件都必须遵守这个标准。

Http请求中常见的请求头?
User-Agent:浏览器类型,如果Servlet返回的内容与浏览器类型有关则该值非常有用。
Cookie:这是最重要的请求头信息之一
Content-Type:请求类型

HTTP协议通信流程:

 

【公共网关接口(Common Gateway Interface,CGI)】

【CGI程序是存放在HTTP服务器上,为用户和HTTP服务器之外的其他应用程序提供互相“交谈”手段的软件】

【CGI应用程序运行在浏览器可以请求的服务器系统上,执行时需要使用服务器CPU时间和内存。如果有成千上万的这种程序会同时运行,那会对服务器系统提出极高的要求。要慎重考虑这个问题,以防止服务器系统崩溃。】

【不完善的CGI应用程序可能成为别人非法进人服务器系统的通道,有可能导致重要的资料被删除或外泄。】

浏览器显示的内容都有HTML、XML、GIF、Flash等,浏览器是通过MIMEType区分它们,决定用什么内容什么形式来显示。

HTTP消息结构

  • HTTP是基于客户端/服务端(C/S)的架构模型,通过一个可靠的链接来交换信息;
  • HTTP使用统一资源标识符(Uniform Resource Identifiers,URI)来传输数据和建立连接。
  • 统一资源定位系统(uniform resource locator,URL)因特网的万维网服务程序上用于指定信息位置的表示方法;就是IMS网络中IMS用户的“名字”,也就是IMS用户的身份标识;

客户端请求消息

客户端发送一个HTTP请求到服务器的请求消息包括以下格式:请求行(requestline)、请求头部(header)、空行和请求数据四个部分组成,下图给出了请求报文的一般格式。

服务器响应消息

HTTP响应也由四个部分组成,分别是:状态行、消息报头、空行和响应正文。

HTTP请求方法

根据HTTP标准,HTTP请求可以使用多种请求方法。

HTTP1.0定义了三种请求方法:GET,POST和HEAD方法。

HTTP1.1新增了六种请求方法:OPTIONS、PUT、PATCH、DELETE、TRACE和CONNECT方法。

GET、POST方法的区别

l  get重点在从服务器上获取资源,post重点在向服务器发送数据;

l  get传输数据是通过URL请求,以field(字段)=value的形式,置于URL后,并用"?"连接,多个请求数据间用"&"连接,如http://127。0。0。1/Test/login。action?name=admin&password=admin,这个过程用户是可见的;post传输数据通过Http的post机制,将字段与对应值封存在请求实体中发送给服务器,这个过程对用户是不可见的;

l  Get传输的数据量小,因为受URL长度限制,但效率较高;Post可以传输大量数据,所以上传文件时只能用Post方式;

l  get是不安全的,因为URL是可见的,可能会泄露私密信息,如密码等;post较get安全性较高;

l  get方式只能支持ASCII字符,向服务器传的中文字符可能会乱码;post支持标准字符集,可以正确传递中文字符。

常见HTTP首部字段
a、通用首部字段(请求报文与响应报文都会使用的首部字段)
Date:创建报文时间
Connection:连接的管理
Cache-Control:缓存的控制
Transfer-Encoding:报文主体的传输编码方式
b、请求首部字段(请求报文会使用的首部字段)
Host:请求资源所在服务器
Accept:可处理的媒体类型
Accept-Charset:可接收的字符集
Accept-Encoding:可接受的内容编码
Accept-Language:可接受的自然语言
c、响应首部字段(响应报文会使用的首部字段)
Accept-Ranges:可接受的字节范围
Location:令客户端重新定向到的URI
Server:HTTP服务器的安装信息
d、实体首部字段(请求报文与响应报文的的实体部分使用的首部字段)
Allow:资源可支持的HTTP方法
Content-Type:实体主类的类型
Content-Encoding:实体主体适用的编码方式
Content-Language:实体主体的自然语言
Content-Length:实体主体的的字节数
Content-Range:实体主体的位置范围,一般用于发出部分请求时使用
HTTP的缺点与HTTPS
a、通信使用明文不加密,内容可能被窃听
b、不验证通信方身份,可能遭到伪装
c、无法验证报文完整性,可能被篡改

HTTPS就是HTTP加上加密处理(一般是SSL安全通信线路)+认证+完整性保护

HTTP优化

利用负载均衡优化和加速HTTP应用

利用HTTPCache来优化网站

http一次连接的全过程:

从用户发起request—到用户接受response

域名解析——》发起TCP的三次握手——》建立TCP连接后发起http请求——》服务器响应http请求,浏览器得到html代码——》浏览器解析html代码,并请求html代码中的资源(如js、css、图片等)——》浏览器对页面进行渲染呈现给用户。

http请求及反馈流程:

l  域名解析

域名解析检查顺序为:浏览器自身DNS缓存---》OS自身的DNS缓存--》读取host文件--》本地域名服务器--》权限域名服务器--》根域名服务器。如果有且没有过期,则结束本次域名解析。域名解析成功之后,进行后续操作

l  tcp3次握手建立连接;

l  建立连接后,发起http请求;

l  服务器端响应http请求,浏览器得到到http请求的内容;

l  浏览器解析html代码,并请求html代码中的资源;

l  浏览器对页面进行渲染,展现在用户面前;

http和https的区别

https协议需要到ca申请证书(CA-certificateauthority权威认证);

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

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

http的连接很简单,是无状态的;

HTTPS协议是由SSL(安全套接层)+HTTP协议构建的可进行加密传输、身份认证的网络协议,要比http协议安全;

注:SSL(安全套接层协议):是为网络通信提供安全及数据完整性的一种安全协议。

SSL协议提供的服务主要有:

1。认证用户和服务器,确保数据发送到正确的客户机和服务器;

2。加密数据以防止数据中途被窃取;

3。维护数据的完整性,确保数据在传输过程中不被改变

总结:

Https需要CA证书,密文传输,端口443;(加密,认证,完整性保护)

Http不需要证书,明文传输,使用80端口;

Http请求中常见的请求方式?

请求方法有8种,分别为:

GET:请求获取由Request-URI所标识的资源。

POST:在Request-URI所标识的资源后附加新的数据。

HEAD:请求获取由Request-URI所标识的资源的响应消息报头。

OPTIONS:请求查询服务器的性能,或查询与资源相关的选项和需求。

PUT:请求服务器存储一个资源,并用Request-URI作为其标识。

DELETE:请求服务器删除由Request-URI所标识的资源。

TRACE:请求服务器回送收到的请求信息,主要用语测试或诊断。

CONNECT:HTTP/1。1协议中预留给能够将连接改为管道方式的代理服务器

Http请求中常见的请求头?

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

Accept-Encoding浏览器申明自己接收的编码方法,例如:Accept-Encoding:zh-CN,zh;q=0。8

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

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

Referer当浏览器向web服务器发送请求的时候,一般会带上Referer,告诉服务器我是从哪个页面链接过来的,服务器籍此可以获得一些信息用于处理。

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

CookieCookie是用来存储一些用户信息以便让服务器辨别用户身份的(大多数需要登录的网站上面会比较常见),比如cookie会存储一些用户的用户名和密码,当用户登录后就会在客户端产生一个cookie来存储相关信息,这样浏览器通过读取cookie的信息去服务器上验证并通过后会判定你是合法用户,从而允许查看相应网页。

Http和Https的区别?

超文本传输协议HTTP协议被用于在Web浏览器和网站服务器之间传递信息,HTTP协议以明文方式发送内容,不提供任何方式的数据加密,如果攻击者截取了Web浏览器和网站服务器之间的传输报文,就可以直接读懂其中的信息,因此,HTTP协议不适合传输一些敏感信息,比如:信用卡号、密码等支付信息。

为了解决HTTP协议的这一缺陷,需要使用另一种协议:安全套接字层超文本传输协议HTTPS,为了数据传输的安全,HTTPS在HTTP的基础上加入了SSL协议,SSL依靠证书来验证服务器的身份,并为浏览器和服务器之间的通信加密。

Get和Post

get是从服务器上获取数据,post是向服务器传送数据。在客户端,get方式通过URL提交数据,数据在URL中可以看到;post方式,数据放置在HTML HEADER内提交。对于get方式,服务器端用Request.QueryString获取变量的值,对于post方式,服务器端用Request.Form获取提交的数据。Get数据提交数据,会带来一定的安全问题,比如一个登录页面,通过Get方式提交数据时,用户名和密码将会出现在URL上,如果页面可以缓存或者其他人可以访问客户这台机器,就可以从历史记录中获得该用户的账号和密码,所以表单提交建议用Post方法;少量数据使用get,大量数据使用post。

Http优化?(响应头设置Content-Encoding: gzip)

1、并行连接

可以通过建立多个tcp连接通道来实现并行传输数据,提高页面的响应速率。并行TCP连接的使用还能够一定程度上减轻RTT延迟和短连接缓启动延迟的影响;

2、长连接

HTTP/1.1默认开启Keep-Alive选项,并且是pipeline模式的。这样建立的TCP连接,可以在多次请求中服用。(注意:pipline目前只能用于GET和HEAD请求)

3.缓存

3.1 Cache-control用来控制缓存。当客户端发送的请求中包含max-age指令时,如果判定缓存层中,资源的缓存时间数值比指定的时间数据小,那么客户端可以接受缓存的资源;当max-age=0时,说明客户端不接受缓存,缓存层需要将请求转发给应用集群(通常是实时性要求很高的服务)。

3.2 If-Modified-Since 也是关于缓存的,这个选项的作用是:如果服务器的资源在某个时间之后更新了,那么客户端就应该下载最新的资源,否则服务器返回“304 Not Modified”的响应,这样也能节省宽带。

Http请求中的状态码?

常见的响应状态码有以下几种,在各种下面分别列几个常见的状态码:

1开头(信息)

2开头(成功)

  200(OK):请求成功,操作成功

  202(Accepted):已接受请求,尚未处理

  204(NoContent):请求成功,且不需返回内容

3开头(重定向)

  301(MovedPermanently):被请求的资源已永久移动到新位置

  301(MovedTemporarily):被请求的资源已临时移动到新位置

4开头(客户端错误)

  400(BadRequest):请求的语义或是参数有错

  403(Forbidden):服务器拒绝了请求;访问受限,授权过期(错误提示)

  404(NotFound):未找到请求的资源;资源,服务器未找到

5开头(服务器错误)

  500(InternalServerError):服务器遇到错误,无法完成请求

  502(BadGetway):网关错误,一般是服务器压力过大导致连接超时

  503(ServiceUnavailable):服务器宕机

  504:网关超时,服务器作为网关或代理,但是没有及时从上游服务器收到请求。

标签:WEB,HTTP,请求,协议,IP,TCP,服务器,连接
来源: https://www.cnblogs.com/qingaoaoo/p/12337353.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有