HTTP 学习

一、HTTP 介绍

1、 HTTP (Hyper Text Transfer Protocol ) 超文本传输协议。它是万维网协会和 Internet工作小组IETF合作的结果。他们发布了一系列的RFC,RFC1945年定义了 HTTP/1.0版本。其中RFC 2616定义了 HTTP 1.1

2、是用于从WWW服务器传输超文本文档到本地浏览器的传送协议。他可以使浏览器更加高效,使网络传输减少。

3、HTTP协议是一个应用层协议,由请求响应构成。

4、HTTP是一个无状态的协议。无状态就是指对于事件的处理没有记忆功能,缺少状态意味着后续处理如果需要之前的信息就必须重新传,这样可能导致每次连接传送的数据量增大。

5、无连接 :含义是 限制每次连接只处理一个请求。服务器处理完客户的请求,并收到客户应答之后就会断开连接。(貌似1.1版本支持长连接  没试过。。)

二、在TCP/IP协议栈中的位置

HTTP 协议通常承载于TCP协议之上,有时候承载于TLS和SSL协议之上,这个时候 就是所谓的HTTPS。

 

默认HTTP的端口号为80,HTTPS的端口号为443。

三、HTTP的请求响应模式

1、HTTP协议永远是客户端发起请求,服务端回应。这样就是说 客户端没有发请求之前服务端是不能将消息推送给客户端的。

2、由于HTTP协议是无状态的,所以统一客户端 上的请求是没有对应关系的。

四、工作流程

一次HTTP操作称为一个事务,其工作过程可分为四步: 1)首先客户机与服务器需要建立连接。只要单击某个超级链接,HTTP的工作开始。 2)建立连接后,客户机发送一个请求给服务器,请求方式的格式为:统一资源标识符(URL)、协议版本号,后边是MIME信息包括请求修饰符、客户机信息和可能的内容。 3)服务器接到请求后,给予相应的响应信息,其格式为一个状态行,包括信息的协议版本号、一个成功或错误的代码,后边是MIME信息包括服务器信息、实体信息和可能的内容。 4)客户端接收服务器所返回的信息通过浏览器显示在用户的显示屏上,然后客户机与服务器断开连接。 如果在以上过程中的某一步出现错误,那么产生错误的信息将返回到客户端,有显示屏输出。对于用户来说,这些过程是由HTTP自己完成的,用户只要用鼠标点击,等待信息显示就可以了。

五、Cookie 和 Session

1、Cookie 和 Session都是为了用来保存状态信息,都是保存客户端状态的机制,他们都是为了解决HTTP 无状态的问题而生。

2、Session可以用Cookie来实现 ,也可以用URL回写的机制来实现。用Cookie来实现的Session可以认为是对Cookie更高级的应用。

Cookie 和Session 的不同点

 1、Cookie 保存在客户端,session保存在服务端。

2、Cookie 是服务器在本地机器上存储的一小段文本并随每一个请求发送至同一个服务器。网络服务器用HTTP头向客户端发送Cookie,在客户端,浏览器解析这些Cookie并将他们保存为一个本地文件,他会自动将同一服务器的任何请求缚上这些Cookie。

3、session是针对每一个用户的,值保存在服务端用一个sessionID来区分是哪个用户session变量,这个值是通过用户的浏览器在访问的时候返回给服务器,当客户禁用cookie时,这个值也可能设置为由get来返回给服务器; 

4、就安全性来说:当你访问一个使用session 的站点,同时在自己机子上建立一个cookie,建议在服务器端的SESSION机制更安全些.因为它不会任意读取客户存储的信息。


六、Session机制

http://www.360doc.com/content/10/0930/17/3668821_57590979.shtml



七、HTTPS 通信过程

1、什么是https

 HTTPS(全称:Hypertext Transfer Protocol over Secure Socket Layer),即HTTP下加入SSL层,HTTPS的安全基础是SSL,因此加密的详细内容请看SSL

2、https的实现原理

两种基本的加解密算法类型:

1)对称加密:密钥只有一个,加密解密为同一个密码,且加解密速度快,典型的对称加密算法有DES、AES等;

 2)非对称加密:密钥成对出现(且根据公钥无法推知私钥,根据私钥也无法推知公钥),加密解密使用不同密钥(公钥加密需要私钥解密,私钥加密需要公钥解密),相对对称加密速度较慢,典型的非对称加密算法有RSA、DSA等


内容概要:本文档主要展示了C语言中关于字符串处理、指针操作以及动态内存分配的相关代码示例。首先介绍了如何实现键值对(“key=value”)字符串的解析,包括去除多余空格和根据键获取对应值的功能,并提供了相应的测试用例。接着演示了从给定字符串中分离出奇偶位置字符的方法,并将结果分别存储到两个不同的缓冲区中。此外,还探讨了常量(const)修饰符在变量和指针中的应用规则,解释了不同类型指针的区别及其使用场景。最后,详细讲解了如何动态分配二维字符数组,并实现了对这类数组的排序与释放操作。 适合人群:具有C语言基础的程序员或计算机科学相关专业的学生,尤其是那些希望深入理解字符串处理、指针操作以及动态内存管理机制的学习者。 使用场景及目标:①掌握如何高效地解析键值对字符串并去除其中的空白字符;②学会编写能够正确处理奇偶索引字符的函数;③理解const修饰符的作用范围及其对程序逻辑的影响;④熟悉动态分配二维字符数组的技术,并能对其进行有效的排序和清理。 阅读建议:由于本资源涉及较多底层概念和技术细节,建议读者先复习C语言基础知识,特别是指针和内存管理部分。在学习过程中,可以尝试动手编写类似的代码片段,以便更好地理解和掌握文中所介绍的各种技巧。同时,注意观察代码注释,它们对于理解复杂逻辑非常有帮助。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值