网络基础知识

1590378268619

问题总结
1
2
3
4
5
6
7
8
9
10
1.osi7层模型
2.TCP/IP四层和五层模型
3.简单介绍一下osi各个层及作用
4.简单介绍一下tcp/ip协议的三次握手和四次挥手
5.为什么连接时候是三次握手而关闭时候是四次
6.为什么不能用两次握手建立连接
7.TCP和UDP协议的区别
8.HTTP和HTTPS的区别
9.get请求和post请求的区别
10.session和cookie的区别

#####OSI参考模型(开放式系统互联)

定义了网络互联的七层框架,物理层,数据链路层,网络层,传输层,会话层,表示层和应用层

1
2
3
4
5
6
7
8
osi七层模型 <-----TCP/IP五层模型 <-------TCP/IP四层模型
物理层 物理层 网络接口层
数据链路层 数据链路层 网络接口层
网络层 网络层 网络层
传输层 传输层 传输层
会话层 应用层 应用层
表示层 应用层 应用层
应用层 应用层 应用层
简单介绍osi七层模型中的各层
1
2
3
4
5
6
7
8
物理层:重要设备为中继器(放大信号)和集线器(放大信号),扩大网络的传输距离. 作用:确保原始数据可在网络媒体上传输
数据链路层:重要设备为网桥(连接网段)和交换机(更多连接接口). 作用:为网络层提供可靠的数据传输,数据成帧,流量控制,数据检错,重发. 协议:网络接口协议
网络层:重要设备为路由器(连接不同网络,信息传输). 作用:对子网间的数据进行路由选择,拥塞控制,网际互连. 协议:IP/ICMP/ARP/RARP协议
传输层:重要设备为网关(网络互连,跟门原理差不多). 作用:将上层数据分段,并提供端到端的,可靠的或不可靠的传输以及端到端的差错控制和流量控制问题 协议:TCP/UDP协议
会话层:管理主机间的会话进程
表示层:对数据进行变换以保证一个主机应用层信息可以被宁一个主机的应用程序理解
应用层:为操作系统或网络应用程序提供访问网络服务的接口
会话层、表示层、应用层的协议:FTP(文件传送协议)/Telnet(远程登录协议)/DNS(域名解析协议)/SMTP(邮件传送协议)/POP3
TCP/IP的三次握手和四次挥手♻
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
1.三次握手(建立连接阶段):
①客户端发送初始序号x和syn=1请求标志
②服务器发送请求标志syn,发送确认标志ACK,发送自己的序号seq=y,发送客户端的确认序号ack=x+1
③客户端发送ACK确认号,发送自己的序号seq=x+1,发送对方的确认号ack=y+1

第一次:客户端发送请求到服务器,服务器知道客户端发送,自己接收正常。SYN=1,seq=x
第二次 :服务器发给客户端,客户端知道自己发送、接收正常,服务器接收、发送正常。ACK=1,ack=x+1,SYN=1,seq=y
第三次:客户端发给服务器:服务器知道客户端发送,接收正常,自己接收,发送也正常.seq=x+1,ACK=1,ack=y+1

2.四次挥手(连接释放阶段):
①客户端发出释放FIN=1,自己序列号seq=u,进入FIN-WAIT-1状态
②服务器收到客户端的后,发出ACK=1确认标志和客户端的确认号ack=u+1,自己的序列号seq=v,进入CLOSE-WAIT状态
③客户端收到服务器确认结果后,进入FIN-WAIT-2状态。此时服务器发送释放FIN=1信号,确认标志ACK=1,确认序号ack=u+1,自己序号seq=w,服务器进入LAST-ACK(最后确认态)
④第四次挥手:客户端收到回复后,发送确认ACK=1,ack=w+1,自己的seq=u+1,客户端进入TIME-WAIT(时间等待)。客户端经过2个最长报文段寿命后,客户端CLOSE;服务器收到确认后,立刻进入CLOSE状态。


第一次:客户端请求断开FIN,seq=u
第二次:服务器确认客户端的断开请求ACK,ack=u+1,seq=v
第三次:服务器请求断开FIN,seq=w,ACK,ack=u+1
第四次:客户端确认服务器的断开ACK,ack=w+1,seq=u+1

ack:确认序号的标志,ack=1表示序列号有效,ack=0表示报文不含确认序列号信息
syn:连接请求序号标志,用于建立连接,syn = 1表示请求连接
fin:结束标志,用于释放连接,1表示关闭本方数据流
为什么三次握手和四次挥手
1
2
三次握手时,服务器同时把ack和syn放在一起发送到客户端那里
四次挥手时,当收到对方的 FIN 报文时,仅仅表示对方不再发送数据了但是还能接收数据,己方是否现在关闭发送数据通道,需要上层应用来决定,因此,己方 ACK 和 FIN 一般都会分开发送。

######能否两次握手建立连接

1
3次握手完成两个重要的功能,既要双方做好发送数据的准备工作,也要允许双方就初始序列号进行协商,这个序列号在握手过程中被发送和确认
使用tcp的协议
1
2

FTP(文件传输协议) Telnet(远程登录协议) SMTP(简单邮件传输协议) POP3(与SMTP对应用于接收邮件) HTTP协议等

######TCP和UDP协议的区别

1
2
3
1.TCP是面向连接的,可靠的字节流服务,UDP是面向无连接的,不可靠的数据流服务

2.TCP安全,稳定,但比较慢,对系统资源要求多,且效率较低
HTTP和HTTPS的区别
1
2
http是以明文方式发送内容
https是在http的基础上使用了SSL/TSL加密

######Get和Post请求的区别

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
1、url可见性:
get:参数url可见 post:参数url不可见
2、数据传输上:
get:通过拼接url进行传递参数 post:通过body体传输参数
3、缓存性:
get请求是可以缓存的 post请求不可以缓存
4、后退页面的反应:
get请求页面后退时,不产生影响 post请求页面后退时,会重新提交请求
5、传输数据的大小
get一般传输数据大小不超过2k-4k(根据浏览器不同,限制不一样,但相差不大)
post请求传输数据的大小根据配置文件设定,也可以无限大。
6.参数的数据类型
get只接受ASCII字符 而POST没有限制

核心:
首先GET和POST是什么?
他们是HTTP协议中两种发送请求的方式。HTTP是基于TCP与IP的关于数据在万维网中如何通信的协议。HTTP的底层是TCP/IP,也就是说GET与POST都是TCP链接。GET与POST做的事是一样的,都可以传输数据。因此GET与POST在本质上没有区别,而真正的区别在于TPC链接的不同
原理
POST方式会产生两个TCP数据包。详细的说,对于GET请求,浏览器会把http header和data一并发送出去,服务器响应200ms后返回数据。而POST请求,浏览器会先发送http header服务器响应100-continue(协议),浏览器再发送data,服务器响应200ms后再返回数据。
session和cookie
1
2
3
4
5
6
7
8
HTTP协议中,客户端请求服务器端是一种无状态的连接,每次请求都是独立的请求
(1)cookie以文本文件格式存储在浏览器中,而session存储在服务器端
(2)cookie的存储限制了数据量,只允许4kb,而session是无限量的
(3)我们可以轻松访问cookie值但是我们无法轻松访问会话值,因此更安全
(4)可以考虑将登录信息等重要信息存放为session,不重要的信息,可以放在cookie中
联系:
(1)都是用来记录用户的信息以便让服务器分辨不同的用户
(2)可以搭配使用 ,都有自己的使用局限,要考虑到安全和性能问题