计算机网络

加塞知识点:KCP(可靠udp),目前常用的客户端与服务器常用协议,发展原因是因为当前网速发展不仅趋向稳定,而且快,TCP太过于复杂,我们想要更快的,这个知识点大家自己去学,投客户端,服务端开发,以及问计网的时候都可以提这个知识点为自己加分,给我感觉就很像无连接的TCP,那为什么不叫快速TCP呢?

可靠UDP,KCP协议快在哪? - 腾讯WeTest - 博客园

~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

为什么DNS使用udp?

因为只需要一问一答,没收到就再问,再问一次的损失也不大,但是我还是有疑问,对于具体的策略网上并没有让我满意的答案,就像是mysql的优化器选择索引的策略

~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

整理下吧,为了秋招,只是手头暂时没书,后续一定好好写,写博客有利于自己学习,整理和回顾自己的学习过程

五层网络模型

物理层(电信号交互)

数据链路层(硬件交互)

网络层(电脑交互)

运输层(程序交互)

应用层(客户端和服务端交互)

从后往前

应用层:

        DNS域名系统:

                每个网址都是https://mp.csdn.net 这样的从后往前是顶级域名,一级,二级。。。

                这样根据域名就可以得到对应IP地址 通过UDP协议运输

简述在网站输入一个URL,返回一个页面的过程,并输出其中使用了那些协议?

根据URL在DNS域名系统中使用迭代查询或递归查询得到IP地址,中间会用到UDP协议,得到IP地址后建立HTTP链接,需要发送一个http请求get数据包,生成一个响应报文,之后对wed页面进行渲染将内容呈现,中间会用到TCP协议,如果是https链接的话还需要进行SSH三次握手加密操作,IP地址和MAC地址的转换还会使用ARP和RARP协议

会追问  http和https的区别

如何渲染页面

GET POST区别

详细描述ssl加密过程

TCP和UDP特性区别

TCP如何保证可靠性

TCP三次握手四次挥手

TCP拥塞控制

1.http和https的区别?

http协议传输的报文是以明文形式传输的,https传输的是ssl加密后的报文

https需要浏览器安装对应的根证书(这个后续会提)

使用的端口号不同

https安全性更高,握手延时也更高(tcp三次握手建立连接后还需要ssl三次握手加密),费用也更高(根证书要钱的)

(在网络中用于区别同一个ip地址下的不同进程用的就是端口号,常用的进程有固定的端口号)

追问:简述ssl三次握手的流程

(ssl加密使用的是对称加密和非对称加密联合的方式关于对称加密和非对称加密自行百度了解)

首先客户端以明文形式发送版本信息,加密套件,压缩算法,再给一个随机数

服务端收到后回复用哪个协议,加密套件,压缩算法,自己生成一个随机数给对方(两边都有2个随机数了目前)

然后服务端会给自己的根证书(证明自己不是恶意软件)

(客户端有自己信任的CA(担保人)如果自己的CA不信任这个根证书就会不断去询问自己信任的CA直到找到一个可以担保该浏览器的CA)

验证通过后客户端会生成第二个随机数,然后用根证书中的公钥加密发送给服务端

此时双方都有了三个随机数,然后根据这些随机数算出密钥

之后的通讯都用该密钥加密

~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

无状态,有状态,短连接,长连接

短连接:每次发送请求,收到数据后就断开(每次连接都需要tcp三次握手,四次挥手浪费资源)

长连接:建立一个长期的链接,一直访问交换数据(链接有个时间,到点了自动断开)

http1.0是无状态短连接的

http1.1后默认是长连接的

无状态:(OMG中单选手,单杀过faker)

每个请求完全独立

有状态:引入cookies, session, application。这样的东西来保持web应用之间的状态

cookie和session的区别

因为http是无状态的,我们想要他有状态,就用两种方式存放信息,(之前访问的记录等)

cookie放在客户端的每次报文中(不安全)

session放在服务端有个表用来查询(给服务器造成了内存压力)

我是这么理解的

cookie 和session 的区别详解 - 施杨 - 博客园

~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

报文格式

请求报文:

请求方法(get,post) URL,协议版本

请求头部

请求数据

响应报文:

http协议版本,状态码 状态码描述

响应头部

响应数据

~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

状态码

1.正在处理

2.成功

3.重定向

        301.永久重定向

        302.临时重定向

        304.如果客户端发送一个待条件的GET请求并且该请求以经被允许,而文档内容未被改变,则返回304,该响应不包含包体(即可直接使用缓存)。

这就是协商缓存

强缓存就是直接使用本地缓存,不向服务端发送请求

协商缓存:向服务器发送请求,服务器会根据这个请求的响应头部的一些参数来判断是否命中协商缓存,如果命中,则返回304状态码并带上新的响应头部通知浏览器从缓存中读取资源;

4.客户端错误

        400.post存在错误

        401.认证失败

        403.请求被拒绝

        404.请求页面不存在

5.服务端错误

        500.执行时错误

        503.服务器超负载或停机维护,现在无法处理

~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

Get和post区别

GET请求在URL中传送的参数是有长度限制的,而POST么有。

GET比POST更不安全,因为参数直接暴露在URL上,所以不能用来传递敏感信息。

GET产生一个TCP数据包;POST产生两个TCP数据包。

(post流程,先发一个数据包告诉浏览器我要给你发一个post命令,然后再发一个数据包)

~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

不同端口通讯协议

UDP协议

特性:尽最大努力交付,无连接,报文流传输(收到什么发什么不切割),支持n:m

不可靠(这里的不可靠不是传输的数据会出现问题,报文首部含有校验码,他的不可靠是指没确认号,超时重传,不能保证数据都到达的不可靠,不是数据内部出错)

TCP协议

特性  面向连接,可靠传输,字节流传输(切割报文发送) 一对一连接

TCP三次握手

过程  客户端SYN置1 发送连接请求,服务端收到后SYN置1,ACK置1,前者表示请求连接,后者表示确认收到,可以一起发就一起发了,当然也可以分开发,但是没必要,多发一次还浪费资源,这也就是为什么不是四次握手的原因了,客户端收到后发送ACK置1的确认信号,然后tcp连接完成,最后一次确认如果没发的话,那么游离的第一次请求连接信号发送到服务端就会造成连接,这样会造成资源的浪费

TCP四次挥手

客户端FIN置1 发起断开连接请求自身进入fin_wait1状态,服务端收到该报文后,返回一个ack为1的确认报文,服务端进入close_wait状态,需要发送的数据发送完毕后,发送一个FIN置1的断开请求,客户端收到确认报文后进入fin_wait2状态,然后发送确认报文,自身进入time_wait状态,等待2msl时间(该状态是为了保证服务端收到确认报文)

TCP如何保证可靠性

序列号,确认应答,超时重传,快重传

收到报文后会返回一个确认报文,超时未收到确认报文就会重传该报文,确认报文的序号为想要收到的序列号,如果连续收到三个相同的确认报文那么立刻重传

一个一个报文的发送显然很慢,于是就有了滑动窗口

发送窗口大小由流量窗口和拥塞窗口的最小值确定

流量控制

所谓的流量控制就是让发送方的发送速率不要太快,让接收方来得及接受

滑动窗口机制

每次发送一个窗口的报文,收到一个确认右移一位

eg:发送t1,t2,t3,t4,t5    t3没收到,收到t4,t5时都会发送t2的确认报文,这也就是超时重传机制除法情况

窗口大小由确认报文中的窗口字段决定

  在某段时间,若对网络中的某一资源的需求超过了该资源所能提供的可用部分,网络的性能就要变化,这种情况叫做拥塞。

拥塞控制

拥塞控制就是慢点发,让网络和带宽能传输

慢开始  刚开始拥塞窗口大小为1,每次*2直到达到阈值

拥塞避免  达到阈值后每次+1

快重传 拥塞窗口大小达到门限后就会发生超时重传现象,然后连续收到三个确认报文就是快速重传,然后阈值会变为当前的窗口大小的一半,之后快恢复

快开始 拥塞窗口变为阈值大小,之后拥塞避免

(ps:不会再次执行慢开始的,慢开始只出现在刚开始和网络延迟时,连续收到三个确认报文已经表明当前网络没有拥塞,只是发送的太多罢了)

拥塞控制和流量控制的差别

     所谓拥塞控制就是防止过多的数据注入到网络中,这样可以使网络中的路由器或链路不致过载。拥塞控制所要做的都有一个前提,就是网络能承受现有的网络负荷。拥塞问题是一个全局性的问题,涉及到所有的主机、所有的路由器、以及与降低网络传输性能有关的所有因素。流量控制往往指的是点对点通信量的控制,是个端到端的问题。流量控制所要做的就是控制发送端发送数据的速率,以便使接收端来得及接受。

~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值