1、图片说明 ISO/OSI:
1、物理层:利用传输介质为数据链路层提供物理连接,实现比特流的透明传输
2、数据链路层:接收来自物理层的位流形式的数据,并封装成帧,传送到上一层
3、网络层:将网络地址翻译成对应的物理地址,并通过路由选择算法为分组通过通信子网选择最适当的路径
4、传输层:在源端与目的端之间提供可靠的透明数据传输
5、会话层:负责在网络中的两个节点之间建立、维持和终止通信
6、表示层:处理用户信息的表示问题,数据的编码,压缩和解压缩,数据的加密解密
7、应用层:为用户的应用进程提供网络通信服务
TCP/IP:物理层,数据链路层,网际网层,传输层,应用层
2、TCP与UDP区别总结
TCP:面向连接,面向字节流,安全可靠,能保证顺序,但是传输速度慢,比较消耗资源
UDP:面向无连接,面向报文,不可靠,不能保证顺序,传输速度快,消耗资源少,所以传输数据的时候多用UDP
3、什么是三次握手?什么是四次挥手?为什么tcp要三次握手?图片说明
为什么:为了防止已经失效的的连接请求报文突然有传送到服务端,造成不必要的错误
三次握手:3.1:客户端发送SYN包,请求建立连接,这时候处于SYN_SEND转态
3.2:服务端接收到SYN包,然后发送确认的SYN+ACK包过去,处于SYN_RECV转态
3.3:客户端接收到来自服务端SYN+ACK包之后,再次发送确认的ACK包,完成本次三次握手的连接,并开始传输数据。
四次挥手:3.1:客户端发送FIN包,进入FIN_WAIT转态,告诉对方我要关闭数据传输了,但是此时还是能接收到传输的数据
3.2:服务端接收到了FIN包,发送ACK包过去,进入到CLOSE_WAIT转态,而客户端也进入到FIN_WAIT2转态
3.3:服务端发送FIN包过去,告诉对方我真的要关闭咯,进入到LAST_ACK转态,来关闭数据传送
3.4:当客户端收到FIN包后,发送ACK回去,进入到TIME_WAIT转态,服务端收到ACK后进入到CLOSE转态,这时候等待约4分钟,防止最后一个ACK丢失。最后完成四次挥手的过程,来关闭连接
4、GET和POST的区别
4.1:get请求的数据放在url上,用?分割URL和传输数据,不太安全,数据最大是2k,所以我们主要用来获取资源名称,是幂等的,会被浏览器主动缓存
4.2:post请求的数据放在请求正文中的,会比较安全,传输数据的大小没有限制,明文传输,主要用于提交数据,不是幂等的,不会被浏览器主动缓存
4.3:还有一些其他的请求方式:HEAD:只返回响应头,OPTIONS:当前url所支持的,DELETE:向服务器发送一个删除资源的请求,PUT:向服务器发送一个提交文件的请求
5、请求头/响应头
5.1:Accept:支持MIME类型(媒体类型)的,针对html文档来说:text/html,对于图片等:image/png,image/gif,对于音频来说:audio/mp3,对于视频来说,video/mp4,mkv,avi
5.2:Referer:指明从哪个页面跳转过来
Cookie:缓存,与服务端发送的Set-cookie响应头成对出现
Location:指示了新的资源路径,与302/307搭配使用
Content-type:与Accept一样
Refersh:url=http://www.cskaoyan.com
说的意思是间隔1s后,向url地址发送http请求。如果没有url,则表示每隔1s刷新当前页面。
Set-cookie:服务端将生成的cookie发送给浏览器端,浏览器再次访问服务器时,会带上cookie请求头
6、一次完整的HTTP请求过程图片说明
1、当在浏览器输入一个URL的时候,我们就发起了一次http请求
2、这个URL经过DNS的域名解析,得到对应的IP地址
3、这时候浏览器就会与服务器开始建立TCP三次握手连接
4、然后浏览器就会进行请求报文的组建,向下进过TCP,报文分割
5、再向下经过IP,添加IP头部
6、传输到服务端,经过IP退去IP头部,经过TCP进行报文组装成原来的格式,服务器拿到了URL,去寻找对应的资源,找到之后就开始组装响应报文了
7、然后再原路返回,浏览器拿到响应报文,开始解析html代码,并请求html代码里面的资源,比如js、css、图片等
8、最后对页面进行渲染呈现给用户

7、HTTP与HTTPS的区别
1、HTTP协议传输都是没有加密的,也就是明文,所以对于传输的隐私信息非常的不安全,而HTTPS是由SSL+HTTP协议构建的可进行加密传输、身份证认证的网络协议,要比HTTP协议安全
2、HTTPS协议需要得到ca申请证书,一般免费的比较少,所以需要一定的费用
3、两者用的连接方式也是不同的,端口号也不一样,HTTP是80,HTTPS是443
8、关于HTTPS加密
SSL代表安全套接字层,它是一种用于加密和验证应用程序(如浏览器)和Web服务器之间发送的数据的协议
HTTPS=SSL+HTTP,一般基于非对称加密(公钥加密,私钥加密)
1、浏览器向服务器发起SSL连接请求
2、服务器向浏览器发送一个公钥,并保留唯一私钥
3、浏览器用公钥对对话秘钥进行加密,发送给服务器
4、服务器用私钥对对话秘钥进行解密
5、进行数据传输,双方用公共的对话秘钥进行加密解密,确保数据不会泄***r>如何保证公钥不被篡改?
每一次对话(session),客户端和服务端都生成一个“对话秘钥”(session。key),用它来加密信息。由于对话秘钥是对称加密,所以运行速度非常快,而服务器公钥只用于加密“对话秘钥”本身,这样就减少了加密运算的消耗时间
(1) 客户端向服务器端索要并验证公钥。
(2) 双方协商生成"对话密钥"。
(3) 双方采用"对话密钥"进行加密通信。上面过程的前两步,又称为"握手阶段"(handshake)。
9、常见的转态码
200:客户端请求成功
302/307:重定向
400:服务器收到请求,但是禁止访问,可能是没有权限
403:服务器收到请求,但是拒绝提供服务
404:NOT FOUND请求资源不存在,输入了错误的URL
500:服务器内部出现错误

10、TCP(传输层)对应的
应用层协议
1、FTP:定义了文件传输协议,使用21端口.
2、Telnet:它是一种用于远程登陆的端口,23端口
3、SMTP:定义了简单邮件传送协议,服务器开放的是25号端口。
4、POP3:它是和SMTP对应,POP3用于接收邮件。
HTTP
1、UDP(传输层)对应的
应用层协议
2、DNS:用于域名解析服务,用的是53号端口
3、SNMP:简单网络管理协议,使用161号端口
4、TFTP(Trival File Transfer Protocal):简单文件传输协议,69
11、Socket
1、socket通常称为“套接字”,封装了三要素(IP地址,端口号,协议),用于描述IP地址和端口,是一个通信链的句柄。应用程序通过套接字向网络发出请求或应答网络请求。
2、套接字之间的连接过程可以分为三个步骤:服务器监听,客户端请求,连接确认
3、Socket是对TCP/IP协议的封装和应用,在TCP/IP协议中,TCP协议通过三次握手建立一个可靠的连接。
4、socket不属于协议范畴,而是一个调用接口(API),是对TCP/IP协议的封装。实现服务器与客户端之间的物理连接,并进行数据传输。Socket处于网络协议的传输层,主要有TCP/UDP两个协议。
5、socket连接是长连接,理论上客户端和服务器端一旦建立起连接将不会主动断掉;但是由于各种环境因素可能会是连接断开,比如:服务器端或客户端主机宕机了、网络故障,或者两者之间长时间没有数据传输,网络防火墙可能会断开该连接以释放网络资源。所以当一个socket连接中没有数据的传输,那么为了维持连接需要发送心跳消息。
6、socket传输的数据可自定义,为字节级,数据量小,可以加密,数据安全性高,适合Client/Server之间信息实时交互。

原文链接:https://blog.csdn.net/Butterfly_resting/article/details/89668402