应用层


HTTP介绍


HTTP协议即超文本传送协议(Hypertext Transfer Protocol ),是Web联网的基础,也是手机联网常用的协议之一,HTTP协议是建立在TCP协议之上的一种应用。
HTTP连接最显著的特点是客户端发送的每次请求都需要服务器回送响应,在请求结束后,会主动释放连接。从建立连接到关闭连接的过程称为“一次连接”。
1)在HTTP 1.0中,客户端的每次请求都要求建立一次单独的连接,在处理完本次请求后,就自动释放连接。
2)在HTTP 1.1中则可以在一次连接中处理多个请求,并且多个请求可以重叠进行,不需要等待一个请求结束后再发送下一个请求。
由于HTTP在每次请求结束后都会主动释放连接,因此HTTP连接是一种“短连接”,要保持客户端程序的在线状态,需要不断地向服务器发起连接请求。通常的 做法是即时不需要获得任何数据,客户端也保持每隔一段固定的时间向服务器发送一次“保持连接”的请求,服务器在收到该请求后对客户端进行回复,表明知道客 户端“在线”。若服务器长时间无法收到客户端的请求,则认为客户端“下线”,若客户端长时间无法收到服务器的回复,则认为网络已经断开。


URL(网址)

这里写图片描述
登录信息已经看不到啦
HTTP协议下服务器端口号不写默认为80
?号后边为查询字符串:每个键值对用&隔开,键和值用=隔开
域名<例:baidu>与IP地址< 16位点分十进制 >采用DNS转换 DNS是⼀整套从域名映射到IP的系统
URL编码查询


HTTP的方法


这里写图片描述


考题:
这里写图片描述


HTTP协议格式


GET
这里写图片描述

POST
这里写图片描述


认识HTTP格式


⾸⾏: [⽅法] + [url] + [版本]
Header: 请求的属性, 冒号分割的键值对;每组属性之间使⽤\n分隔;遇到空⾏表示Header部分结束
Body: 空⾏后⾯的内容都是Body. Body允许为空字符串. 如果Body存在, 则在Header中会有⼀个GET和POST的区别
Content-Length属性来标识Body的⻓度,如果服务器返回了⼀个html⻚⾯, 那么html⻚⾯内容就是在body中

Host:客户端告知服务器, 所请求的资源是在哪个主机的哪个端⼝上
User-Agent: 用户操作系统版本 + 浏览器名字版本
Content-Type:Boy格式(数据类型)
Referer:当前页面的前一个页面
Cookie: ⽤于在客户端存储少量信息. 通常⽤于实现会话的功能(一般为4K),
location: 搭配3xx状态码使⽤, 告诉客户端接下来要去哪⾥访问;


CONNECT


这里写图片描述


HTTP状态码
HTTP状态码详解


这里写图片描述
常见HTTP状态码 :
200 OK
302 重定向
403 禁止的
404 Not Found
503 服务器维护


DNS
DNS是⼀整套从域名映射到IP的系统


DNS系统

  • ⼀个组织的系统管理机构, 维护系统内的每个主机的IP和主机名的对应关系.
  • 如果新计算机接⼊⺴络, 将这个信息注册到数据库中;
  • ⽤户输⼊域名的时候, 会⾃动查询DNS服务器, 由DNS服务器检索数据库, 得到对应的IP地址
  • 我们的计算机上仍然保留了hosts⽂件. 在域名解析的过程中仍然会优先查找hosts⽂件的内容

查看命令 cat /etc/hosts

域名简介、使用、连接
例:www.baidu.com

  • com: ⼀级域名. 表⽰这是⼀个企业域名. 同级的还有 “net”(网络提供商), “org”(⾮盈利组织) 等.
  • baidu: ⼆级域名, 公司名.
  • www: 只是⼀种习惯⽤法. 之前⼈们在使⽤域名时, 往往命名成类似于ftp.xxx.xxx/www.xxx.xxx这样的格式, 来表⽰主机⽀持的协议.

域名服务器
域名是分层结构,域名服务器也是对应的层级结构。

域名解析过程

  • 输⼊域名后, 先查找⾃⼰主机对应的域名服务器
  • 域名服务器先查找⾃⼰的数据库中的数据. 如果没有, 就向上级域名服务器进⾏查找, 依次类推;
  • 最多回溯到根域名服务器, 肯定能找到这个域名的IP地址.
  • 域名服务器⾃⾝也会进⾏⼀些缓存. 把曾经访问过的域名和对应的IP地址缓存起来, 可以加速查找过程

浅谈浏览器输入URL(例:www.baidu.com)后,后面发生的事?


一、域名解析
1. 查本地hosts文件
2. 查看浏览器缓存中是否有该域名(到根过程)
3. 通过DNS系统进行域名解析
二、构造请求
1. 创建TCP客户端(socket api)三次握手等
2. 按照HTTP协议格式构造HTTP请求(构造一个符合HTTP协议的请求字符串)(再谈HTTP的GET请求格式,牵引出与POST区别)
三、数据转发过程1(IP数据报路由过程)(还可拓展每层协议的报文格式,注意事项,可以将整个网络的知识都串联引进)
1. 在客户端的传输层,把HTTP会话请求分成报文段,添加源和目的端口,(如服务器使用80端口监听客户端的请求, 客户端由系统随机选择一个端口, 与服务器进行交换,服务器把相应的请求返回给客户端的这个端口),然后使用IP层的IP地址查找目的端。
2. 客户端的网络层不用关心应用层或者传输层的东西,主要做的是通过查找路由表确定如何到达服务器,期间可能经过多个路由器,这些都是由路由器来完成的工作,就是通过查找路由表决定通过那个路径到达服务器。
3. 客户端的链路层,数据包通过链路层发送到路由器, 通过邻居协议查找给定IP地址的MAC地址,然后发送ARP请求查找目的地址,如果得到回应后就可以使用ARP的请求应答交换的IP数据包现在就可以传输了,然后发送IP数据包到达服务器的地址
4. 服务器拿到数据解调
四、数据转发过程2
1. HTTP请求首先会访问本地运营商部署的服务器
2. 访问百度机房的入口服务器
3. 访问百度机房的应用服务器
4. 访问百度机房文件存储服务器


OSI七层模型:
https://blog.csdn.net/Romantic_C/article/details/81665591
网络套接字:
http://www.noobyard.com/article/p-afkejdbv-pg.html
UDP服务器:
https://blog.csdn.net/Romantic_C/article/details/81705468
TCP服务器:
https://blog.csdn.net/Romantic_C/article/details/81707907
应用层:
http://www.noobyard.com/article/p-yqikerbl-rr.html
传输层:
https://blog.csdn.net/Romantic_C/article/details/81747317
网络层:
http://www.noobyard.com/article/p-flnqpmhh-qe.html
数据链路层:
http://www.noobyard.com/article/p-vsbedtvz-sw.html