TCP.IP

HTTP

超文本传输协议,是互联网上应用最为广泛的一种网络协议

请求报文包含三部分:

a、请求行:包含请求方法、URI、HTTP版本信息

b、请求首部字段

c、请求内容实体

响应报文包含三部分:

a、状态行:包含HTTP版本、状态码、状态码的原因短语

b、响应首部字段

c、响应内容实体

网络状态码
  • 2XX:成功
  • 3XX:进一步操作,重定向等
  • 4XX:请求错误
  • 5XX:服务处理错误
  • 301:永久跳转
  • 403:禁止访问,权限不够
  • 404:找不到客户端请求的页面
  • 502:坏的网关
  • 504:网关超时
新版本特性:

a、默认持久连接节省通信量,只要客户端服务端任意一端没有明确提出断开TCP连接,就一直保持连接,可以发送多次HTTP请求

b、管线化,客户端可以同时发出多个HTTP请求,而不用一个个等待响应

c、断点续传原理

HTTPS

HTTP的安全版,在HTTP下加入SSL层,HTTPS的安全基础是SSL,因此加密的详细内容就需要SSL协议

通信过程
  1. 客户端发起url请求
  2. 服务端返回公钥
  3. 客户端验证公钥,正确则下一步,错误则警告
  4. 客户端生成随机值,使用公钥加密
  5. 发送到服务端,服务端使用私钥解密随机值
  6. 随机值做秘钥做对称加密
  7. 发送给客户端,使用随机值解密
常见问题:

Q:HTTP与HTTPS区别?

A: 1.HTTPS需要申请购买CA证书, HTTP不需要

2.HTTP是明文传输,不安全, HTTPS是在HTTP基础上加了SSL层,更安全

3.HTTPS效率低,HTTP效率高

Q:HTTPS传输过程?

A:客户端发起 HTTPS 请求,服务端返回证书,客户端对证书验证,验证通过后本地生成用于改造对称加密算法的随机数,通过证书中的公钥对随机数进行加密传输到服务端,服务端接收后通过私钥解密得到随机数,之后的数据交互通过对称加密算法进行加解密。

Q:为什么需要证书?

A:防止中间人攻击,验证服务器身份

Q:怎么防止的篡改?

A:证书是公开的,虽然中间人可以拿到证书,但私钥无法获取,公钥无法推断出私钥,所以篡改后不能用私钥加密,强行加密客户也无法解密,强行修改内容,会导致证书内容与签名中的指纹不匹配

TCP/IP

TCP/IP协议集包括应用层,传输层,网络层,网络访问层

TCP/UDP

TCP面向连接的,传输可靠,占用系统资源较多,速度慢,效率低,当对网络质量有要求时使用

UDP是无连接的,传输不可靠,占用系统资源少,速度快,效率高,对数据安全性无特殊要求使用

关于检测网络连接
统计80端口连接数
netstat -nat|grep -i “80”|wc -l

统计httpd协议连接数
ps -ef|grep httpd|wc -l

查出哪个IP地址连接最多
netstat -na|grep ESTABLISHED|awk {print $5}|awk -F: {print $1}|sort|uniq -c|sort -r +0n

查看nginx当前并发访问数:
netstat -apn|grep 'nginx: worker'|wc -l

查看apache当前并发访问数:
netstat -an | grep ESTABLISHED | wc -l

查看http有多少个进程数:
ps aux|grep httpd|wc -l

对连接的IP按连接数量进行排序:
netstat -ntu | awk '{print $5}' | cut -d: -f1 | sort | uniq -c | sort -n

查看TCP连接状态:
netstat -nat |awk '{print $6}'|sort|uniq -c|sort -rn
netstat -n | awk '/^tcp/ {++S[$NF]};END {for(a in S) print a, S[a]}'
netstat -n | awk '/^tcp/ {++state[$NF]}; END {for(key in state) print key,"\t",state[key]}'
netstat -n | awk '/^tcp/ {++arr[$NF]};END {for(k in arr) print k,"\t",arr[k]}'
netstat -n |awk '/^tcp/ {print $NF}'|sort|uniq -c|sort -rn
netstat -ant | awk '{print $NF}' | grep -v '[a-z]' | sort | uniq -c

查看80端口连接数最多的20个IP:
netstat -anlp|grep 80|grep tcp|awk '{print $5}'|awk -F: '{print $1}'|sort|uniq -c|sort -nr|head -n20
netstat -ant |awk '/:80/{split($5,ip,":");++A[ip[1]]}END{for(i in A) print A,i}' |sort -rn|head -n20

用tcpdump嗅探80端口的访问看看谁最高:
tcpdump -i eth0 -tnn dst port 80 -c 1000 | awk -F"." '{print $1"."$2"."$3"."$4}' | sort | uniq -c | sort -nr |head -20

查找较多time_wait连接:
netstat -n|grep TIME_WAIT|awk '{print $5}'|sort|uniq -c|sort -rn|head -n20

找查较多的SYN连接:
netstat -an | grep SYN | awk '{print $5}' | awk -F: '{print $1}' | sort | uniq -c | sort -nr | more

三次握手

关键词

SYN 建立连接标识

ACK 确认连接标识

Seq 顺序号码,随机生成数字,防止截获

ack 确认号码

FIN 结束

为什么不是四次不是两次是三次

因为以前就是四次,服务端会发送一个syn和一个ack给客户端,但是两个数据包几乎会同步,所以合并成一个包即可

不是两次是因为,客户端要确认服务端,服务端也要确认客户端才能建立双向连接

四次挥手

为什么是四次挥手不是三次

理论上讲也可以三次挥手,2和3和合并成一个数据包发送给客户端,但是存在着一些问题,因为在传输数据时有可能是单向传输的,2和3和合并成一个数据包那么也就是确认和结束连接标识必须要一起发送,假设服务端正在给客户端传输数据,客户端可以结束单向连接但是服务端不能结束连接,此刻如果确认和结束连接数据包一起发送,就会导致服务端的传输被迫终止

OSI七层和四层模型

详细七层模型

这张图是转载的,地址不记得了,转载,侵删

简化七层和四层模型

被迫终止

OSI七层和四层模型

详细七层模型

[外链图片转存中…(img-BS6q9Mr9-1656486883776)]

这张图是转载的,地址不记得了,转载,侵删

简化七层和四层模型

[外链图片转存中…(img-MsXp1Upm-1656486883776)]

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值