HTTP在WebApi

1.http是什么?

http是一种基于应用层的一种超文本传输协议(HyperText Transfer Protocol)

2.本章主要讲解什么?

本章目的就讲解:当我们在浏览器输入:http://www.google.com.hk/,浏览器给我们呈现Google界面,这个过程发生了什么,我暂且将发生的内容归于如下几点:

(1).域名解析

(2).TCP建立连接(三次握手)

(3).TCP通信(传递数据)

(4).断开连接(四次挥手)

基于如上过程,我们将分系一下:

(1)HTTP 请求

(2)HTTP响应

那么,我们先来看看。

HTTP协议定义了浏览器怎样向万维网服务器请求万维网文档,以及服务器怎样把文档传送给浏览器,大致工作流程图如下图所示。

1.一次TCP连接,需要三个过程:建立连接(三次握手)、传送数据和释放连接(四次挥手);

2.http是基于TCP/IP协议的,且在五层模型中的运用层协议;

3.客户端请求URL,如上图的http://www.googl.com.hk;

4.服务器会根据客户端的请求,给予相应的响应(Responce);

下面,我们将简要列举涉及到的部分关键技术,分别如下:

(一)基于TCP/IP

关于网络传输模型,早期大致有四层模型结构和七层模型结构,经过演变,最终将四层模型结构和七层模型结构归结为五层结构模型。

1.五层结构模型:运用层、传输层、网络层、数据链路层和物理层;

2.传输协议:基于TCP/IP

3.http协议是基于运用层的协议;

4.五层结构中,从纵向上来说,客户端是从上往下传输,服务端是从下往上接受;

5.五层结构中,从横向上来说,每一层的协议必须是相同的,至少是相似(一般我们在分析层时,将会横向上虚拟抽象,屏蔽其他层);

6.运用层支持多种传输协议,如http协议,smtp协议,ftp协议等;

7.区分几个概念:TCP/IP协议,TCP协议和UDP协议

(1)TCP/IP协议:TCP/IP是一组包括TCP协议和IP协议,UDP(User Datagram Protocol)协议、ICMP(Internet Control Message Protocol)协议和其他一些协议的协议组;

(2)TCP协议:传输层中的传输控制协议;

(3)UDP协议:传输层中的数据报问协议;

(二)特点

http协议具有很多优秀的特点,下图只是简要的列举其部分特点。

1.简单快速:http协议简单,客户端向服务器发送请求时,只需传送请求方法和路径即可,传送的内容简单轻量级,减少传输带宽,速度快;

2.B/S模式:B/S模式(Browse/Server模式),也叫客户端(Google,firefox,ie)/服务器模式,在Web开发中,基本都是基于B/S模式;

3.无连接:http协议本身是无连接的,虽然http使用了tcp连接,但通信双方在交换http保温之前不需要先建立http连接;

4.无状态:无状态是指协议对于事务处理没有记忆能力,也就是说,同一个客户第二次访问同一个服务器上的页面时,服务器的响应与第一次被访问的相同;

(三)三次握手

每一次TCP连接都需要三个阶段:建立连接、传送数据和释放连接。三次握手就发生在建立连接阶段,其大致流程如下图所示。

1.第一次握手:客户端请求连接。客户端向服务器发出请求连接(client向server发送sys=j的包),进入发送请求状态(syn_sent状态),并等待服务器确认。

2.第二次握手:服务器接受请求并向客户端发出确认信息。当服务器收到syn包后,先确认客户的syn(ack=j+1),同时也需要发布一个syn包(syn=k),即syn+ack包,此时服务器进入syn_recv状态。

3.第三次握手:建立连接。客户端收服务器的syn+ack包后,向服务器发棕确认包ack(ack=k+1),当此包发送完毕后,客户端和服务器就进入了连接状态(连接成功),完成三次握手;

如上似乎有些抽象,我们举个打电话的例子:

我们打电话的目的是为了传递信息,在打电话前,我们需要先拨通对方的电话且对方应答之后,才能通电话(建立连接),以A,B两人通电话为例子:

A:拨打B的手机(拨号,拨通后等待B接电话,相当于第一次握手,请求等待状态);

B:看到A打来的电话(是A才接,确认),接了电话,对A说:您好,老A(向A表明自己是B,相当于第二次握手) ;

A:您好啊,老B(第三次握手);

双方都问候,表名自己身份后,就可以正式通话了(三次握手结束)。

(四)四次挥手

TCP连接是全双工的,因此每个方向都必须单独进行关闭。当一方完成它的数据发送任务后就能发送一个FIN来终止这个方向的连接,收到一个 FIN只意味着这一方向上没有数据流动,

一个TCP连接在收到一个FIN后仍能发送数据。首先进行关闭的一方将执行主动关闭,而另一方执行被动关闭。

1.TCP客户端发送一个FIN,用来关闭客户到服务器的数据传送。

  1. 服务器收到这个FIN,它发回一个ACK,确认序号为收到的序号加1。和SYN一样,一个FIN将占用一个序号。

3.服务器关闭客户端的连接,发送一个FIN给客户端。

4.客户端发回ACK报文确认,并将确认序号设置为收到序号加1。

(五)URI、URL与URN

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值