1.OSI参考模型及各层功能(7层)
应用层:
提供应用层服务,文件传输(FTP),电子邮件(SMTP), 主要的协议还有HTTP(超文本传输协议),DNS,和telnet
表示层:
用于数据格式化,代码转换,数据加密,没有协议
会话层:
解除或建立与别的接点的联系,没有协议
传输层:
接受上一层的数据并交给网络层 TCP UDP
网络层:
控制子网运行, IP ICMP(ping主要实现), OSPF(全局泛洪,主要用于IP选路)
数据链路层:
将原始比特转为逻辑传输线路 ARP(地址解析协议,根据IP地址获得MAC地址)
物理层:
机械电子设备,通信信道上的原始比特流传输
详情查看
2.TCP UDP协议
TCP---传输控制协议
提供的是面向连接、可靠的基于字节流的传输层通信协议。当客户和服务器彼此交换数据前,必须先在双方之间建立一个TCP连接,之后才能传输数据。TCP提供超时重发,丢弃重复数据,检验数据,流量控制等功能,保证数据能从一端传到另一端。
- 将应用层的数据流分割成报文段并发送给目标节点的TCP层
- 数据包都有序号,对方收到则发送ACK确认,未收到则重传
- 使用校验来检验数据在传输过程中是否有误
UDP---用户数据报协议
是一个简单的面向数据报的运输层协议。UDP不提供可靠性,它只是把应用程序传给IP层的数据报发送出去,但是并不能保证它们能到达目的地。由于UDP在传输数据报前不用在客户和服务器之间建立一个连接,且没有超时重发等机制,故而传输速度很快。
特点:
1.面向非连接
2.不维护连接状态支持同时向多个用户传输相同的信息
3.数据包报头至于8个字节,额外开销较小
4.吞吐量只受限于数据生成速率、传输速率以及机器性能
5.尽最大可能交付,不保证可靠交付,不需要维持复杂的链接状态表
6.面向报文,不对应用程序提交报文信息进行拆分或者合并
区别
连接性:
TCP面向连接(如打电话要先拨号建立连接);UDP是无连接的,即发送数据之前不需要建立连接
可靠性:
TCP提供可靠的服务。也就是说,通过TCP连接传送的数据,无差错,不丢失,不重复,且按序到达;UDP尽最大努力交付,即不保证可靠交付。Tcp通过校验和,重传控制,序号标识,滑动窗口、确认应答实现可靠传输。如丢包时的重发控制,还可以对次序乱掉的分包进行顺序控制。
实时性:
UDP具有较好的实时性,工作效率比TCP高,适用于对高速传输和实时性有较高的通信或广播通信。
传输方式:
每一条TCP连接只能是点到点的;UDP支持一对一,一对多,多对一和多对多的交互通信
资源:
TCP对系统资源要求较多,UDP对系统资源要求较少。
应用场景
1.普通的会议视频图像,当然首选UDP,毕竟丢几包无所谓。
2.传输文件等,不能丢包,用TCP
3.Http Https协议
- HTTP 明文传输,数据都是未加密的,安全性较差,HTTPS(SSL+HTTP) 数据传输过程是加密的,安全性较好。
- 使用 HTTPS 协议需要到 CA(Certificate Authority,数字证书认证机构) 申请证书,一般免费证书较少,因而需要一定费用。证书颁发机构如:Symantec、Comodo、GoDaddy 和 GlobalSign 等。
- HTTP 页面响应速度比 HTTPS 快,主要是因为 HTTP 使用 TCP 三次握手建立连接,客户端和服务器需要交换 3 个包,而 HTTPS除了 TCP 的三个包,还要加上 ssl 握手需要的 9 个包,所以一共是 12 个包。
- http 和 https 使用的是完全不同的连接方式,用的端口也不一样,前者是 80,后者是 443。
- HTTPS 其实就是建构在 SSL/TLS 之上的 HTTP 协议,所以,要比较 HTTPS 比 HTTP 要更耗费服务器资源。
4.三次挥手四次握手
什么是“3次握手,4次挥手”
TCP是一种面向连接的单播协议,在发送数据前,通信双方必须在彼此间建立一条连接。所谓的“连接”,其实是客户端和服务器的内存里保存的一份关于对方的信息,如ip地址、端口号等。
TCP可以看成是一种字节流,它会处理IP层或以下的层的丢包、重复以及错误问题。在连接的建立过程中,双方需要交换一些连接的参数。这些参数可以放在TCP头部。
TCP提供了一种可靠、面向连接、字节流、传输层的服务,采用三次握手建立一个连接。采用4次挥手来关闭一个连接)
5.HTTP状态码
6.Cookie和Session的区别
7.GET请求和POST请求的区别
详情查看
GET请求参数是通过URL进行传递的,POST请求的参数包含在请求体当中。
GET请求比POST请求更不安全,因为参数直接暴露在URL中,所以,GET请求不能用来传递敏感信息。
GET请求在url中传递的参数是有长度限制的(在HTTP协议中并没有对URL的长度进行限制,限制是特定的浏览器以及服务器对他的限制,不同浏览器限制的长度不同。),POST对长度没有限制。
GET请求参数会完整的保留在浏览器的历史记录中,POST请求的参数不会保留。
GET请求进行url编码(百分号编码),POST请求支持多种编码方式。
GET请求产生的URL地址是可以被bookmark(添加书签)的,POST请求不可以。
GET请求在浏览器回退的时候是无害的,POST请求会.再次提交数据。
GET请求在浏览器中可以被主动cache(缓存),而POST请求不会,可以手动设置。