网络传输过程、参考模型、TCP/IP、http、https
OSI七层概念模型

- 应用层:负责解决业务问题
- 表示层:负责把网络中的消息转换成应用层可以读取的消息
- 会话层:负责建立会话、握手、维持连接、关闭
- 传输层:负责解决进程与进程之间的通信,例如TCP保证报文的可达性和流量的控制
- 网络层:负责解决广域网(Internet)中主机之间数据的传递
- 数据链路层:负责局域网中根据MAC地址连接的相应的交换机/路由器进行报文的转发
- 物理层:物理传输介质
TCP/IP模型对照


分层模型的优点在于当前层只需要考虑与其相邻层的对接交互,即每一层只为其之上的层服务,并使用在其之下的层所提供的服务,而不需要考虑其相邻层之外的其他层做了什么。分层模型的缺点在于不同层之间数据交互需要耗费更多的时间,从而影响网络性能。
TCP协议
传输控制协议(TCP,Transmission Control Protocol)是一种面向连接的、可靠的、基于字节流的传输层通信协议
特点:
- 基于链接的:传输数据之前需要建立链接
- 全双工:双向传输(请求响应)
- 字节流:不限制请求大小,打包成报文段,保证有序接受,重复报文自动丢弃
- 流量缓存:解决双方处理能力的不匹配
- 可靠的传输服务:保证可达,丢包时通过重发机制实现可靠
- 拥塞控制:防止网络出现恶性拥塞
报文头部

一些查看信息命令
-
查看网络状态。netstat -natp/在mac中需要使用
netstat -tlp tcp netstat -tlp udp来指定其后使用的协议状况。- n:拒绝显示别名,能显示数字的全部转化为数字禁止转换,localhost这种形式显示成ip形式
- t (tcp) 仅显示tcp相关选项
- p:显示进程的 PID 和名称
-
抓包:抓80端口的包:tcpdump --n -i eth0 port 80
抓80端口的包或者apr请求的包:tcpdump --n -i eth0 port 80 or arp- –n:显示ip形式,不以localhost方式显示
- -i:指定网卡
- port:指定端口
-
IP地址:IP地址就可以访问到每台主机,相当于主机的唯一身份ID
-
掩码: 子网掩码只有一个功能,就是将IP地址划分为网络地址和主机地址两部分。 如同现实生活中的通讯地址,可以看作省市部分和具体门牌号部分。相同的IP地址,但掩码不一样,则指向的网络部分和主机部分不一样。如IP地址192.168.1.11,255.255.255.0 的掩码表示网络地址192.168.1,主机地址是1;255.255.0.0 的掩码表示网络地址192.168,主机部分是1.1 。
-
网关:一个网络连接到另一个网络的“关口”
-
dns:进行域名(domain name)和与之相对应的IP地址 (IP address)转换的服务器。
http协议
HTTP协议(HyperText Transfer Protocol,超文本传输协议):是一种无状态的,以请求/应答方式运行的协议,他使用可以扩展的语义和自描述消息格式,与基于网络的超文本信息系统(html)灵活的互动
- 传输协议实际是交给TCP协议来完成的
- 无状态:并不会存储用户的信息;如果连接意外断开,整个会话就会丢失,重新连接之后一般需要从头开始
- 请求/应答:一次请求对应一次响应
- 可扩展:可以自定义扩展一些head字段等
- 自描述: 消息体可以是音频视频、文本、图片等(Content-type)
HTTP协议解决了什么问题
-
Form Follows Function 形式服务于功能
-
解决的是人与机器之间高效的信息交互
报文格式
http请求与响应报文基本相同,由4大部分组成
- 起始行(start line):描述请求与响应的基本信息(请求行或状态行)
- 消息报头(四种:普通报头,请求报头,响应报头,实体报头)
- 空行
- 消息正文
请求报文

- 请求方法:如GET/HEAD/PUT/POST,表示对资源的操作;
- 请求目标:通常是一个URI,标记了请求方法要操作的资源;
- 版本号:表示报文使用的HTTP协议版本
响应报文

- 版本号:表示报文使用的HTT协议版本;
- 状态码:一个三位数,用代码的形式表示处理的结果,比如200是成功,301/302是重定向,404是NOT FOUND,500是服务器错误;
- 原因:作为数字状态码补充,是更详细的解释文字,帮助人理解原因
HTTP头字段
头部字段是key-value的形式,key和value之间用"“分隔,最后用CRLF换行表示字段结束。比如前后分离时经常遇到的要与后端协商传输数据的类型"Content-type:application/json”,这里key就是"Content-type",value就是"applicationjson"。HTTP头字段非常灵活,不仅可以使用标准里的Host,Connection等已有头,也可以任意添加自定义头,这就给HTTP协议带来了无限的扩展可能
头字段注意事项
- 字段名不区分大小写,字段名里不允许出现空格,可以使用连字符"-",但不能使用下划线"_"(有的服务器不会解析带 " _ " 的头字段)。字段名后面必须紧接着":",不能有空格,而 “:” 后的字段值前可以有多个空格;
- 字段的顺序是没有意义的,可以任意排列不影响语义;
- 字段原则上不能重复,除非这个字段本身的语义允许,例如Set-Cookie。
常用头字段
HTTP协议中有非常多的头字段,但基本上可以分为四大类:
- 请求字段:请求头中的头字段;如Host,Referer
- 响应字段:响应头中的头字段,如:Server
- 通用字段:在请求头和响应头里都可以出现,如Content-type,Connection;
请求过程

HTPS协议
由于HTTP天生“明文"的特点,整个传输过程完全透明,任何人都能够在链路中截获、修改或者伪造请求/响应报文,数据不具有可信性。例如:一个网站时没有广告的,打开后全是广告,其实就是被劫持过程中修改了
因此就诞生了为安全而生的HTTPS协议使用HTPS时,所有的HTTP请求和响应在发送到网络之前,都要进行加密。
https利用摘要算法、对称加密算法、非对称加密算法来完成的


我们为什么需要HTTPS?
主要有三个原因:
- 保护隐私:所有信息都是加密传播,第三方无法窃听数据。如果使用HTTP明文传输数据的话,很可能被第三方劫持数据,那么所输入的密码或者其他个人资料都被暴露在他人面前,后果可想而知。
- 数据完整性:一旦第三方篡改了数据,接收方会知道数据经过了篡改,这样便保证了数据在传输过程中不被篡改 —— 数据的完整性。
- 身份认证:第三方不可能冒充身份参与通信,因为服务器配备了由证书颁发机构(Certificate Authority,简称CA)颁发的安全证书,可以证实服务器的身份信息,防止第三方冒充身份。(也有少数情况下,通信需要客户端提供证书,例如银行系统,需要用户在登录的时候,插入银行提供给用户的USB,就是需要客户端提供证书,用来验证客户的身份信息。)
Web架构的七大关键属性
-
性能:影响高可用的关键因素
-
可伸缩性:支持部署可以互相交互的大量组件
-
简单性:易理解、易实现、易验证
-
可见性:对两个组件间的交互进行监视或者仲裁的能力。如缓存、分层设计等
-
可移植性:在不同的环境下运行的能力
-
可靠性:出现部分故障时对整体的影响程度
-
可修改性:对系统做出修改的难易程度,由可进化型、可定制性、可扩展性、可配置性、可重用性构成
五种架构风格
- 数据流风格 Data-flow Styles
优点:简单性、可进化性、可扩展性、可配置性、可重用性 - 复制风格 Replication Styles
优点:用户可察觉的性能、可伸缩性,网络效率、可靠性也可以得到提升 - 分层风格 Hierarchical Styles
优点:简单性、可进化性、可伸缩性 - 移动代码风格 Mobile Code Styles
优点:可移植性、可扩展性、网络效率 - 点对点风格 Peer-to-Peer Styles
优点:可进化性、可重用性、可扩展性、可配置性
更多推荐



所有评论(0)