zoukankan      html  css  js  c++  java
  • 网络知识

    TPC/IP协议是传输层协议,主要解决数据如何在网络中传输,而HTTP是应用层协议,主要解决如何包装数据。 

    下面的图表试图显示不同的TCP/IP和其他的协议在最初OSI模型中的位置:

    7 应用层 例如HTTPSMTPSNMPFTPTelnetSIPSSHNFSRTSPXMPPWhoisENRP
    6 表示层 例如XDRASN.1SMBAFPNCP
    5 会话层 例如ASAPTLSSSH、ISO 8327 / CCITT X.225、RPCNetBIOSASPWinsockBSD sockets
    4 传输层 例如TCPUDPRTPSCTPSPXATPIL
    3 网络层 例如IPICMPIGMPIPXBGPOSPFRIPIGRPEIGRPARPRARP、 X.25
    2 数据链路层 例如以太网令牌环HDLC帧中继ISDNATMIEEE 802.11FDDIPPP
    1 物理层 例如线路无线电光纤信鸽

    TCP/IP具体是怎么通信的呢?

    • 利用TCP/IP协议族进行网络通信时,会通过分层顺序与对方进行通信。发送端从应用层往下走,接收端则往应用层往上走。我们用HTTP举例来说明,首先作为发送端的客户端在应用层(HTTP协议)发出一个想看某个Web页面的HTTP请求。接着,为了传输方便,在传输层(TCP协议)把从应用层处收到的数据(HTTP请求报文)进行分割,并在各个报文上打上标记序号及端口号后转发给网络层。在网络层(IP协议),增加作为通信目的地的MAC地址后转发给链路层。这样一来,发往网络的通信请求就准备齐全了。接收端的服务器在链路层接收到数据,按序往上层发送,一直到应用层。当传输到应用层,才能算真正接收到由客户端发送过来的HTTP请求。

    1. 应用层 :

    • 应用层决定了向用户提供应用服务时通信的活动。TCP/IP协议族内预存了各类通用的应用服务。比如,FTP(File Transfer Protocol,文件传输协议)和DNS(Domain Name System,域名系统)服务就是其中两类。HTTP协议也处于该层。

    • 2传输层 :

    • 传输层对上层应用层,提供处于网络连接中的两台计算机之间的数据传输。在传输层有两个性质不同的协议:TCP(Transmission ControlProtocol,传输控制协议)和UDP(User Data Protocol,用户数据报协议)。

    • 3、网络层 :

    • 网络层用来处理在网络上流动的数据包。数据包是网络传输的最小数据单位。该层规定了通过怎样的路径(所谓的传输路线)到达对方计算机,并把数据包传送给对方。与对方计算机之间通过多台计算机或网络设备进行传输时,网络层所起的作用就是在众多的选项内选择一条传输路线。

    • 4、链路层(又名数据链路层,网络接口层) :

    • 用来处理连接网络的硬件部分。包括控制操作系统、硬件的设备驱动、NIC(Network Interface Card,网络适配器,即网卡),及光纤等物理可见部分(还包括连接器等一切传输媒介)。硬件上的范畴均在链路层的作用范围之内。

    确保可靠性的TCP协议。

    • 按层次分,TCP位于传输层,提供可靠的字节流服务。所谓的字节流服务(Byte Stream Service)是指,为了方便传输,将大块数据分割成以报文段(segment)为单位的数据包进行管理。而可靠的传输服务是指,能够把数据准确可靠地传给对方。一言以蔽之,TCP协议为了更容易传送大数据才把数据分割,而且TCP协议能够确认数据最终是否送达到对方。

    • 确保数据能到达目标。为了准确无误地将数据送达目标处,TCP协议采用了三次握手(three-way handshaking)策略。用TCP协议把数据包送出去后,TCP不会对传送后的情况置之不理,它一定会向对方确认是否成功送达。握手过程中使用了TCP的标志(flag) ——SYN(synchronize) 和ACK(acknowledgement)。发送端首先发送一个带SYN标志的数据包给对方。接收端收到后,回传一个带有SYN/ACK标志的数据包以示传达确认信息。最后,发送端再回传一个带ACK标志的数据包,代表握手结束。若在握手过程中某个阶段莫名中断,TCP协议会再次以相同的顺序发送相同的数据包。除了上述三次握手,TCP协议还有其他各种手段来保证通信的可靠性。

    图解传说中的HTTP协议(一)

    负责域名解析的DNS服务。

    • DNS(Domain Name System)服务是和HTTP协议一样位于应用层的协议。它提供域名到IP地址之间的解析服务。计算机既可以被赋予IP地址,也可以被赋予主机名和域名。比如www.baidu.com。因为域名更加直观,所以用户通常使用主机名或域名来访问对方的计算机,而不是直接通过IP地址访问。但要让计算机去理解名称,相对而言就变得困难了。因为计算机更擅长处理一长串数字。为了解决上述的问题,DNS服务应运而生。DNS协议提供通过域名查找IP地址,或逆向从IP地址反查域名的服务。

    图解传说中的HTTP协议(一)

    HTTP协议用于客户端和服务器端之间的通信。

    • HTTP协议和TCP/IP协议族内的其他众多的协议相同, 用于客户端和服务器之间的通信。请求访问文本或图像等资源的一端称为客户端, 而提供资源响应的一端称为服务器端。在两台计算机之间使用HTTP协议通信时, 在一条通信线路上必定有一端是客户端, 另一端则是服务器端。有时候, 按实际情况, 两台计算机作为客户端和服务器端的角色有可能会互换。 但就仅从一条通信路线来说, 服务器端和客户端的角色是确定的, 而用HTTP协议能够明确区分哪端是客户端, 哪端是服务器端。

    图解传说中的HTTP协议(二)

    通过请求和响应的交换达成通信。

    图解传说中的HTTP协议(二)

    • HTTP协议规定, 请求从客户端发出, 最后服务器端响应该请求并返回。 换句话说, 肯定是先从客户端开始建立通信的, 服务器端在没有接收到请求之前不会发送响应。

    图解传说中的HTTP协议(二)

    • 起始行开头的GET表示请求访问服务器的类型, 称为方法(method) 。 随后的字符串/index.htm指明了请求访问的资源对象,也叫做请求URI(request-URI) 。 最后的HTTP/1.1, 即HTTP的版本号, 用来提示客户端使用的HTTP协议功能。综合来看, 这段请求内容的意思是: 请求访问某台HTTP服务器上的/index.htm页面资源。

    • 请求报文是由请求方法、 请求URI、 协议版本、 可选的请求首部字段和内容实体构成的。

    图解传说中的HTTP协议(二)

    • 紧挨着的200 OK表示请求的处理结果的状态码(status code) 和原因短语(reason-phrase) 。 下一行显示了创建响应的日期时间, 是首部字段(header field) 内的一个属性。接着以一空行分隔, 之后的内容称为资源实体的主体(entity body)。响应报文基本上由协议版本、 状态码(表示请求成功或失败的数字代 码) 、 用以解释状态码的原因短语、 可选的响应首部字段以及实体主体构成。 稍后我们会对这些内容进行详细说明。

    HTTP是不保存状态的协议。

    • HTTP是一种不保存状态, 即无状态(stateless) 协议。HTTP协议自身不对请求和响应之间的通信状态进行保存。 也就是说在HTTP这个级别, 协议对于发送过的请求或响应都不做持久化处理。

    图解传说中的HTTP协议(二)

    • 使用HTTP协议, 每当有新的请求发送时, 就会有对应的新响应产生。 协议本身并不保留之前一切的请求或响应报文的信息。 这是为了更快地处理大量事务, 确保协议的可伸缩性, 而特意把HTTP协议设计成如此简单的。可是, 随着Web的不断发展, 因无状态而导致业务处理变得棘手的情况增多了。 比如, 用户登录到一家购物网站, 即使他跳转到该站的其他页面后, 也需要能继续保持登录状态。 针对这个实例, 网站为了能够掌握是谁送出的请求, 需要保存用户的状态。HTTP/1.1虽然是无状态协议, 但为了实现期望的保持状态功能, 于是引入了Cookie技术。 有了Cookie再用HTTP协议通信, 就可以管理状态了。

    学着把生活的苦酒当成饮料一样慢慢品尝, 不论生命经过多少委屈和艰辛, 我们总是以一个朝气蓬勃的面孔, 醒来在每一个早上。
  • 相关阅读:
    Maven笔记之面试题合集
    Maven笔记之核心概念及常用命令
    UML中的关系
    RocketMq核心概念
    linux安装rocketMq(包括安装maven,JDK)
    linux安装JDK,配置环境变量
    ASP.NET Core读取appsettings.json配置文件信息
    ASP.NET Core获取客户端IP地址
    ASP.NET Core根据环境切换NLog配置
    ASP.NET Core使用NLog记录日志
  • 原文地址:https://www.cnblogs.com/yhm9/p/11089730.html
Copyright © 2011-2022 走看看