网络基础TCP/IP
1、TCP/ IP:是在 IP 协议的通信过程中,使用到的协议族的统称。
2、协议:计算机与网络设备之间的通信规则。计算机与网络设备要相互通信,双方就必须基于相同的方法。比如,如何探测到通信目标、由哪一边先发起通信、使用哪种语言进行通信、怎样结束通信等规则都需要事先确定。不同的硬件、操作系统之间的通信,所有的这一切都需要一种规则。而我们就把这种规则称为协议(protocol)。
3、TCP的分层管理
- 分为应用层,传输层, 网络层和链路层共四层
- 应用层:只考虑分配给自己的任务,不考虑其他。处于该层的协议有HTTP、FTP、DNS
- 传输层:提供处于网络连接中的两台计算机之间的数据传输。处于该层的协议有TCP
- 网络层:选择传输路线发送数据。处于该层的协议有IP
- 链路层:处理连接网络的所有的硬件部分。
4、TCP/IP通信传输流
- 发送端的服务器由应用层向下发送数据,接收端的服务器在链路层接收到数据,按序往上层发送,一直到应用层。
- 发送端在层与层之间传输数据时,每经过一层时必定会被打上一个该层所属的首部信息。反之,接收端在层与层传输数据时,每经过一层时会把对应的首部消去。这种把数据信息包装起来的做法称为封装(encapsulate)。
5、IP协议
- IP协议负责传输,IP协议的作用是把各种数据包传送给对方。
- 通过IP 地址和 MAC 地址(Media Access Control Address)来确定传输的准确路线。
- IP 地址指明了节点被分配到的地址,MAC 地址是指网卡所属的固定地址。
- 使用ARP协议通过MAC地址进行通讯。
- ARP 是一种用以解析地址的协议,根据通信方的 IP 地址就可以反查出对应的 MAC 地址。
6、TCP协议
- TCP协议提供可靠的字节流服务
- 字节流服务:为了方便运输将大块的数据切割成以报文段为单位的数据包进行管理。
- 为了确保接收端确实收到了数据,TCP协议通过三次握手来确保数据的可靠性。
- TCP的重复机制也保证了数据的可靠性:通信实体A发送一个消息给通信实体B后,会等待通信实体B返回的确认信息,如果A没有收到B的确认信息,则A会再次发送该消息
7、DNS服务
- DNS服务负责域名解析,提供域名到 IP 地址之间的解析服务
8、各种协议与HTTP协议的关系
- HTTP协议:生成请求报文
- TCP协议:将请求报文分割标号,并通过三次握手来确保数据的可靠性
- IP协议:搜索对方位置,一边中转一边传送
- TCP协议:将切割的报文按照标记重组
- HTTP协议:对请求报文进行处理
9、URI和URL
- URI是统一资源标识符,URL统一资源定位符。URL是URI的子集。
- URI 用字符串标识某一互联网资源,而 URL 表示资源的地点(互联网上所处的位置)。
简单的HTTP协议
1、HTTP协议的特点
- HTTP 协议用于客户端和服务器端之间的通信
- HTTP协议通过请求和响应的交换来达到通信的目的
- HTTP协议是不保存状态的协议
- HTTP协议通过URI定位资源
2、告知服务器意图的HTTP方法
- GET:获取资源
- POST:传输实体
- PUT:传输文件
- DELETE:删除文件
- HEADE:获取报文首部
- TRACE:追踪路径
- OPTIONS:询问支持的方法
- CONNECT:要求用隧道连接代理
3、持久化连接
- 持久化连接产生的原因:每次请求都会造成TCP的连接和断开,增加了通信的开销
- 持久化连接的特点:只要任意一段没有提出断开就保持连接状态
- 持久化连接的好处:避免了TCP的重复连接和重复断开,减少了开销和服务器的负载
4、管线化连接
- 持久化连接发送请求后接收到响应才会继续进行下一次请求,管线化连接不用等待响应直接发送下一次请求,因此耗时要比持久化连接小
5、使用COOKIE进行状态管理
- HTTP无状态协议的优点可减少服务器的 CPU 及内存资源的消耗。
- 通过COOKIE来进行管理来解决HTTP无状态造成的一些问题
没有 Cookie 信息状态下的请求
第 2 次以后(存有 Cookie 信息状态)的请求
HTTP报文内的HTTP信息
1、请求报文
HTTP 请求行:
- 请求方式,比如 GET 、POST 等
- 本次请求的URI ,比如 /hello
- 协议和版本号
HTTP 常见请求首部:
HTTP 请求正文:
- 一种是 请求参数 ,比如 /hello?username=zhangsanfeng&password=wudang2017
- 一种是 针对上传文件 等操作
2、响应报文
HTTP 响应行:
- 协议、状态、描述
- HTTP 1.1 中定义的状态代码
HTTP 常见响应首部:
HTTP 响应正文:
- 响应正文可以是 HTML 、CSS 、 JavaScript 、TXT ....
response.getWriter();
- 响应正文可以是也可以是 二进制文件,比如 mp4 、mp3 、jpeg 、gif 、doc 、pdf
response.getOutputStream();
3、编码
- 编码作用是提升传输速率
- 压缩编码是压缩传输的内容
- 分割发送的分块传输编码
学习资料
《图解HTTP》下载:https://pan.baidu.com/s/14Q9tAvPEeNSm77mZDW83_g 密码:2pim