关于Web前端的一些笔记

笔记杂谈

欢迎阅读



前言

之所以记录这些,是因为看了别人的笔记总是记不住。为了加深记忆,本文会记录一些比较经典的题目,还是选择敲一点东西,以后要回来阅读也更容易一些。


一、TCP的三次握手和四次挥手

想要了解三次握手和四次挥手,首先得了解TCP报文的主要字段的意思。

  • 序列号(seq):表示发送的数据字节流,因为传输的过程中数据是分成一片一片同时传输的,为确保报文到达目的后能正确拼接。对数据每个字节编号,其中报文段的序列号就是第一个字节的数据编号。
  • 确认号(ack):表示发送方期待接收的下一序列号,接收成功后的数据字节序列号加1。
  • ACK:标志确认号有无。只有ACK=1,ack才有效,ACK=0表示报文不含ack。
  • SYN:标志连接请求序列号。SYN=1表示请求连接。
  • FIN:结束标志,用于释放连接,FIN=1表示关闭本方数据流。

需要注意的是,大写的ACK、SYN和小写的ack、syn不是一回事,前者只是作为标志位,后者才是序号。

三次握手的过程

Alt
分析握手之前,我们需要知道的一点是,握手需要
1、客户端知道自己能接收、发送和服务器能接收、发送;
2、服务器知道自己能接收、发送和客户端能接收、发送。

知道之后我们开始分析:

  • 第一次握手:客户端发送一个请求给服务端,请求内容有 SYN=1,seq=x(x为一个随机数)。

此时服务器收到后知道客户端能发送,自己能接收了。

  • 第二次握手:服务器发送给客户端一个包,让客户端知道服务器已经接收到了,所以发送了一个确认号ack,想知道自己能不能发送请求,所以自己也发送了一个序列号seq。包里面内容包括ACK=1,SYN=1,seq=y(y为一个随机数),ack=x+1。

此时客户端收到后知道自己能接收、发送了,并且知道服务器能接收、发送了。

  • 第三次握手:客户端向服务器发送一个确认,让服务器知道了客户端能接收,服务器能发送了。请求内容包括ACK=1,seq=x+1,ack=y+1,

此时服务器也知道了自己能接收、发送,客户端能接收、发送。三次握手完毕。

四次挥手过程

Alt

  • 第一次挥手:客户端请求断开。发出释放FIN=1,序列号seq=u(u是一个随机数)。
  • 第二次挥手:服务器收到客户端的请求后,确认断开请求。发出确认号ACK=1确认标志和确认好ack=u+1,并且发送自己的序列号seq=v(v是一个随机数)。
  • 第三次挥手:服务器请求断开。发出释放FIN=1,确认ACK=1确认标志和确认号ack=u+1,并且发送自己的序列号seq=w(w是一个随机数)。
  • 第四次挥手:客户端收到后,发送确认ACK=1,ack=w+1,自己的序列号seq=u+1。客户端经过2个最长报文段寿命后,客户端CLOSE;服务器收到确认后,立刻进入CLOSE状态。

常见问题:

为什么是三次握手和四次挥手呢?

  • 三次握手是因为第二次握手时,服务器同时把确认标志ACK和序列号标志SYN一起发送给客户端。
  • 四次挥手是因为第二次挥手,服务器端这边在收到客户端的断开请求时,可能还在向客户端传输其他数据,所以会先发确认标志ACK,表示自己收到了确认断开请求。在所有数据发完之后才会发送FIN断开请求。

为什么客户端最后要等待2MSL

  • 因为如果客户端最后一次发送的ACK报文没发送成功,服务器会一直开着等待客户端的请求,如果到一定的时候一直没有回复的话,服务器可以请求客户重发,在2MSL时间内,客户端是还可以重发给服务器的。
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
这个文档包含了HTML/css的一些基础,还有JavaScript中的基础语法、DOM、BOM还有一些学习js中面向对象、和移动web开发、AJAX、jQuery的一些总结,还有些Web前端与移动开发面试宝典; 6、什么是事件冒泡/捕获? 事件冒泡: 事件到达事件目标之后不会结束,会逐层向上冒泡,直至document对象,也就是子元素事件的触发会影响父元素的事件; 开关事件冒泡: A,开启事件冒泡:event.addEventListener(eventName,handler,false); B,关闭事件冒泡:假设传统方式事件的返回值为e,就可以通过e.stopPropagation()来关闭事件冒泡; C ,return false; 同时具有阻止冒泡和阻止默认行为的功能 事件捕获:父元素的事件会影响子元素的事件; 开启事件捕获:event.addEventListener(eventName,handler,true) 7、请说说事件委托机制?这样做有什么好处? 事件委托,就是某个事件本来该自己干的,但是自己不干,交给别人来干。就叫事件委托。 打个比方:一个 button对象,本来自己需要监控自身的点击事件,但是自己不来监控这个点击事件,让自己的父节点来监控自己 的点击事件。 优点: A,提高性能:列如,当有很多li同时需要注册事件的时候,如果使用传统方法来注册事件的话,需要给每 一个li注册事件。然而如果使用委托事件的话,就只需要将事件委托给该一个元素即可。这样就能提高性能。 B,新添加的元素还会有之前的事件; 11、怎么理解jQuery? JQuery就是JavaScript和查询(Query),是一个Javascript库。可以用来操作文档对象、 选择DOM元素、制作动画效果、事件处理、使用Ajax等。 优点: a、轻量级 b、具有强大的选择器 c、封装了大量的DOM操作 d、事件处理机制相当可靠 e、完善的Ajax f、不污染顶级变量 g、出色的浏览器兼容性 h、链式操作方式 i、隐式迭代 j、行为与结构分离 k、支持丰富的插件 l、完善的文档 m、开源 12、Jquery.on这个方法怎么看? 答: jQuery.on()方法可以给匹配元素(可以是多个)绑定一个或多个函数, off 可以解除绑定

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值