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运行机制:客户端向服务器所要并验证公钥,用公钥生成秘钥,用秘钥加密传输