网络知识

网络知识

Scroll Down

网络知识

1.七层网络架构osi

物理层:网络连接的物理条件
数据链路层:将网络内容转换为电信号
网络层:找到对应的电脑
传输层:将对应的数据进行分类处理
会话层: 不同机器建立及管理会话
表示层: 将信息转换为不同操作系统所接受的内容
应用层: 将网络信息转换为需要做的内容 消息头

2.osi实现tcp/ip四层

应用层
传输层
网络层
链路层

3.Tcp

1.tcp简介

面向连接的可靠的基于字节流的传输层通讯协议,将应用层的数据流分割成报文段并发送给目标节点的TCP层
数据包都有序号 对方收到则发送ack确认,未收到则重传,发送和接受都要校验数据包的正确性

2.TCP三次握手

在TCP/IP协议中采用三次握手进行建立连接:
	第一次握手:建立连接时,客户端发送SYN包(syn=j)到服务器,并进入syn-send状态等待服务器确认
	第二次握手:服务器收到syn包,必须确认syn(ack=j+1),同时自己也发送一个syn(syn=k),即syn+ack包,此时服务器进入syn-recv状态
	第三次握手:客户端收到服务器的syn+ack包,向服务起发送确认的包ack(ack=k+1),此包发送完毕,服务器和客户端进入establish状态,完成三次握手

原因:为了初始化sequence number的初始值
包活机制:向对方发送保活报文,未收到则继续发送

3.TCP四次挥手

第一次挥手:client发送一个fin,用来关闭client到server的数据传送,client进入fin_wait_1的状态
第二次挥手:server收到fin后发送一个ack给client,确认序号为收到的序号+1,server进入close_wait状态
第三次挥手:server发送一个fin,用来关闭client到server的数据传送,server进入last_ack的状态
第四次挥手:client收到fin后,client进入time_wait状态,接着发送一个ack给server,确认号为收到的序列号+1 server进入closed状态

原因:因为全收工 发送方和接受方都需要fin报文和ack报文
Clint最后timewait状态:确保有足够的时间让对方收到ack包 避免新旧数据包混淆

Linux查看closewait命令
netstat -n | awk '/^tcp/ {++S[$NF]} END { for(a in S) print a, S[a]}'

状态:描述
CLOSED:无连接是活动的或正在进行
LISTEN:服务器在等待进入呼叫
SYN_RECV:一个连接请求已经到达,等待确认
SYN_SENT:应用已经开始,打开一个连接
ESTABLISHED:正常数据传输状态
FIN_WAIT1:应用说它已经完成
FIN_WAIT2:另一边已同意释放
ITMED_WAIT:等待所有分组死掉
CLOSING:两边同时尝试关闭
TIME_WAIT表示处理完毕,等待超时结束的请求数。
LAST_ACK:等待所有分组死掉

2.Udp
1.udp特点
面向非连接 不维护连接状态 支持多个客户端 传输相同的信息
数据包报头只有8个字节 开销小
吞吐量之受限于数据生成速率、传输速率以及机器性能
经最大努力交付,不保证可靠交付,不维持复杂的链接状态表
面向报文,不对应用的报文信息进行拆分合并
2.tcp udp特点
Tcp面向连接 udp面向无连接 tcp有序udp是无序的 tcp可靠udp不可靠
Tcp更慢udp更快 tcp重量级20byte和udp轻量级8byte
3.http
1.特点
在浏览器地址栏输入url:按下回车经历 的流程:
DNS解析:浏览器会逐步查询缓存找IP地址 浏览器缓存 系统缓存 路由器缓存 ips缓存等
TCP解析 三次握手 与服务器建立连接
发送HTTP请求
服务器处理请求并返回HTTP报文
浏览器解析渲染页面
连接结束 四次挥手
2.HTTP状态码

404 页面未找到
401 未授权
400 参数不匹配
405 请求方式不正确、
403 服务器拒绝请求
500 后台报错
503 服务器连接池满了
304  缓存
200 正确

3.GET和post的区别
1.http报文层面:
get将请求放在URL上由于浏览器地址栏长度有限所以get所传的请求信息有限
post是放在请求报文里,请求信息无线长度
2.数据库层面
Get一般做查询操作 具有冪等性和安全性
Post一般操作数据库不符合
3.其他
Get能够被缓存 post不能被缓存

4.cookie和session的区别
存放位置:cookie存放在客户浏览器上 session存放在服务器上
安全性:cookie不安全 session安全
大小:cookie大小4KB session是无限量的
Session会影响服务器性能
5.http和https的区别
http 需要ca证书 http不需要
https是密文传输 http不需要
连接方式不同 https端口默认使用443 http为80
https=http+加密+认证+完整性保护 更加更全