C#基础之HTTP入门(一)——HTTP基础知识

一.前言

还记得第一次去找工作的时候,来到杭州某某智慧医疗公司,面试的时候,那边的技术总监就问了一个HTTP的OSI的模型有几层。每每说到这个OSI模型,我就想起我大学的计算机网络这门课是在睡梦中渡过的。依稀记得老师姓熊,除了老师的名字以外,整门课我现在都记不得,与其说把知识都还给老师了,还不如说是压根就没有学好。

"请问一下,HTTP的OSI模型有几层?"面试官看了一下手中的简历问道。

"应该是5层吧!?"我心中忐忑,因为我只知道OSI的模型是七层,但是对于HTTP的OSI有几层我真的一头雾水,"好像我的大学老师说是5层的。"

"那你的大学老师确实有点水。"面试官看了我一眼不知道说什么好。

"我记得是5层的....应该没错吧?"我反驳道,听到老师被别人说,心里有一点点不甘心。

......

说来好玩,后面我和那个面试官争的面红耳赤。

最后的结果当然是没有通过面试,但是我并没有为我回答了错误的答案而感到一点羞愧,因为我并不是来应聘网络工程师的,对于OSI什么的究竟对于HTTP有什么用,我当时真的不是很想去考究。

言归正传,我说上面的列子不是来喷那个面试官的,其实想说的就是我写的这篇文章仅仅是HTTP在C#的一些皮毛,就像我当时面试的时候懵懂无知一样,也许看完我这篇文章之后,小伙伴们可能已经会用HTTP了,但不代表真的是理解的透彻。如果想要学习,可能要找更多的资料和书籍进行翻阅学习。


二.HTTP简介


(1)HTTP的由来

HTTP即为HyperText Transfer Protocol的英文的缩写,中文翻译是超文本传输协议或者翻译为超文件传输协议,它是一种因特网上比较流行的传输协议。

HTTP最初用来发布和接收由文本组成的HTML网页页面的协议方法,后来才逐渐从只能传输文本数据,到可以传输图片文件、影视频文件,以及各种压缩、程序文件等各种文件数据。


(2)HTTP协议版本

目前使用的基本上都是HTTP/1.1版本。如下图,在访问百度的时候发的GET请求用的HTTP版本为HTTP/1.1:


(3)HTTP协议所在OSI层次

HTTP属于应用层,位于TCP/IP的顶层。如下图:

由上图可知,HTTP是基于TCP的为基础的进行工作的,所以HTTP不会出现数据丢失和数据乱序的情况。客户端通过TCP建立的链接后,用套接字发送HTTP,同理通过套接字接收HTTP的请求响应。


(4)HTTP发送请求过程

主要的过程如下:

1. 客户端与服务器建立TCP链接

2. 客户端向服务器发送请求,如果服务器接收请求,则回送响应码和所需的信息数据,响应的过程是一个异步于其他的过程的过程

3. 重复第二步,直到客户端将要和服务器断开链接

4. 客户端与服务器断开链接

注意:HTTP/1.1支持持久链接,在客户端发送一个请求直到收到响应之前,可以再次发送多个请求,即在完成一个请求和接收一个应答之后,还可以多次在这之后或者并列的完成多次"请求—应答";而对于HTTP/1.0则不支持持久链接。


(5)HTTP的特点

1. 以TCP的方式工作,上面已经分析;

2. HTTP是无状态的,即服务器不会存储关于客户端的任何状态信息,也不会保存客户端的请求究竟是何种请求类型。如果一个客户端请求两次相同的内容,服务器也会进行两次返回请求的对象内容,而不管原来是不是已经向客户端发送过这个请求的对象;

3. HTTP使用元信息作为标头,即在请求的主体之前添加一部分信息,我们把这一部分数据称之为元信息(Metainfotmation),对于源信息所在的部分,我们称之为标头(Header),上面第一个图中的Request Header即为我们请求百度页面的标头,其中的"Host: www.baidu.com"和"Connection: keep-Alive"等信息都属于元信息;


(6)HTTP/1.0和HTTP/1.1之间的区别

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值