http和tcp的关系
http在应用层,tcp在传输层,http要基于tcp,tcp建立连接,http用来收发数据
tcp如何保证可靠传输
三次握手和四次挥手:syn,ack/syn,ack;fin,ack,fin,ack
超时重传:设置重传计时器,时限内没有收到确认帧,就重新发送数据
流量控制:控制发送方的发送速率,一对一
拥塞控制:控制发送方的发送速率,多对一
如何应对大量访问,恶意攻击,dos,洪泛攻击
洪泛攻击就是攻击者发送大量的syn,服务器为每个syn分配一个特定的数据区,服务器返回ack后,攻击者不再进行确认,这个tcp连接就处于挂起状态
syn cookie,基本原理:完成三次握手之前服务器不分配数据区,而是根据syn计算出一个cookie值,发送方返回的ack如果与这个cookie值相同,才建立连接分配数据区
TCP的流量控制
让发送方发慢点,要让接收方来得及接收
利用滑动窗口机制:a给b发送数据,a有发送缓存,b有接收缓存,应用层所有需要发送的数据都放在发送缓存,发送窗口是发送缓存允许发送但尚未发送的部分,成功发送数据之后,发送窗口就会往后移动,b会告诉a自己的接收窗口大小,a根据b的接收窗口大小动态地调整自己的发送窗口大小,发送窗口取接收窗口和拥塞窗口的最小值
发送缓存分哪几个区域
已经发送并收到确认,已经发送未收到确认,允许发送但尚未发送,不允许发送
拥塞控制
慢开始和拥塞避免:拥塞窗口从1开始按照指数增长,达到门限值每次加1,出现拥塞以后门限值设置为当前拥塞窗口大小/2,拥塞窗口从1开始重复这个过程
快重传和快恢复:发送方收到连续三个重复确认就重传接收方没有收到的报文段,而不用等待重传计时器到期,然后把门限值减半,执行拥塞避免
拥塞控制对移动端、打游戏,游戏动作同步有什么影响
游戏里面很多都是用UDP,你了解吗
对速度要求高
为什么直播要用UDP--》视频网站一般用TCP,因为对画面质量有要求,且允许缓冲等待;而微信视频聊天一般用udp,因为不希望画面卡顿,可以接受画面不太清晰
王者荣耀用UDP会有什么问题
丢包
但是它实际不会出现这个问题,为什么
本地的文件和逻辑
客户端和服务器
客户端:为客户提供本地服务的程序
服务器:网络中能对其他机器提供服务的计算机系统
tcp
transmission control protocol传输控制协议,工作在传输层
ip internet protocol网络协议,工作在网络层
tcp:是面向连接,可靠的协议,传输之前要经过三次握手,不容易丢失数据,网络开销大
udp:是不面向连接,不可靠的协议,不需要对方确认就可以开始传输,容易丢失数据,网络开销小
三次握手:发送方发送syn,接收方发送ack,syn,发送方发送ack
四次挥手:发送方发送fin,接收方发送ack,接收方发送fin,发送方发送ack
http
hypertext transfer protocol超文本传输协议,工作在应用层
为什么基于tcp不基于udp,因为打开一个网页需要传输很多数据,tcp提供传输控制,按顺序组织数据,有错误纠正
视频电话用的什么协议
udp,因为视频电话对实时性要求高,udp传输速度快,比较合适
如何布置服务器
不会
服务器程序崩溃怎么解决
服务器超载:采用轮询机制,减少中断,减少上下文切换,扩容
线程死锁:设置不同的线程优先级,回退等待,按顺序加锁,设置请求锁时限,超时则放弃请求并且释放自己占有的锁
从浏览器输入网址到出现网页发生了什么
1.从本地host文件查找域名对应的ip地址,如果本地没有,就从dns服务器查找,返回ip地址
2.tcp三次握手:浏览器发送syn,服务器返回ack/syn,浏览器返回ack
3.浏览器发送请求:发送方从应用层到物理层一层一层加包头,接收方从物理层到应用层一层一层解包
4.服务器处理请求
5.服务器向浏览器返回html文件:加包解包
6.tcp四次挥手:浏览器发送fin,服务器返回ack,服务器发送fin,浏览器返回ack
7.浏览器解析html文件,渲染页面
http1.0,1.1,2.0,https
http1.1
引入了更多的缓存控制策略,错误状态响应码,管道机制,持久连接:tcp连接默认不关闭,可以被多个请求复用
http2.0
二进制分帧,多路复用,数据流,首部压缩,服务端推送
https
在tcp和http之间加了一层用于加密解密的ssl(安全套接层)/tsl层(安全传输层)
ssl/tsl运行机制:客户端向服务器所要并验证公钥,用公钥生成秘钥,用秘钥加密传输