Web开发中的网络知识(传输层)

一、网络分层

二、传输层协议——TCP和UDP

2.1 TCP协议:建立连接(三次握手)——传输数据——断开连接(四次挥手)

1. 三次握手

第一次握手:建立连接时,客户端发送syn包(syn=j)到服务器,并进入SYN_SENT状态,等待服务器确认;SYN:同步序列编号(Synchronize Sequence Numbers);

第二次握手:服务器收到syn包,必须确认客户的SYN(ack=j+1),同时自己也发送一个SYN包(syn=k),即SYN+ACK包,此时服务器进入SYN_RECV状态;

第三次握手:客户端收到服务器的SYN+ACK包,向服务器发送确认包ACK(ack=k+1),此包发送完毕,客户端和服务器进入ESTABLISHED(TCP连接成功)状态,完成三次握手。

若ACK帧丢失,则服务器会每隔一段时间向客户端重发SYN+ACK包,直到收到客户端的确认为止,如果一直未收到则断开连接,但客户端并不知情,以为连接已成功建立,就会像服务器发送数据,此时,服务器会通过RST响应强制关闭连接。

参考链接:

https://github.com/jawil/blog/issues/14
http://www.ruanyifeng.com/blog/2017/06/tcp-protocol.html

2. TCP为什么要进行三次握手?

在谢希仁著《计算机网络》第四版中讲三次握手的目的是为了防止已失效的连接请求报文段突然又传送到了服务端,因而产生错误。在另一部经典的《计算机网络》一书中,三次握手的目的是为了解决网络中存在延迟的重复分组的问题,这两种不同的表述其实阐明的是同一个问题。

谢希仁版《计算机网络》中的例子是这样的,已失效的连接请求报文段的产生在这样一种情况下:client发出的第一个连接请求报文段并没有丢失,而是在某个网络结点长时间的滞留了,以致延误到连接释放以后的某个时间才到达server。本来这是一个早已失效的报文段,但server收到此失效的连接请求报文段后,就误认为是client再次发出的一个新的连接请求,于是就向client发出确认报文段,同意建立连接。假设不采用三次握手,那么只要server发出确认,新的连接就建立了。由于现在client并没有发出建立连接的请求,因此不会理睬server的确认,也不会向server发送数据。但server却以为新的运输连接已经建立,并一直等待client发来数据。这样,server的很多资源就白白浪费掉了。采用三次握手的办法可以防止上述现象发生,例如刚才那种情况,client不会向server的确认发出确认,server由于收不到确认,就知道client并没有要求建立连接。

3. 四次挥手

client对server说:我没有数据传送了,请求关闭连接;

server对client说:我知道了,但是我有数据要发送,你还可以接收我发送的数据;

server对client说:我也没有数据要传送了,请求关闭连接;

client对server说:我知道了。

server收到该确认时就关闭连接,client等待一段时间后没有收到回复,则认为server已关闭连接,则client也关闭连接。

参考链接:

https://github.com/jawil/blog/issues/14
http://www.ruanyifeng.com/blog/2017/06/tcp-protocol.html

2.2 UDP协议:客户端和服务器之间不需要建立连接,客户端随时可以将数据发送给服务器端。

2.3 TCP和UDP的区别

1. 基于连接与无连接;
2. 对系统资源的要求(TCP较多,UDP少);
3. UDP程序结构较简单;
4. 流模式与数据报模式 ;

5. TCP保证数据正确性,UDP可能丢包,TCP保证数据顺序,UDP不保证。

2.4 TCP和UDP的优缺点

1. TCP的优点: 可靠,稳定。TCP的可靠体现在TCP在传递数据之前,会有三次握手来建立连接,而且在数据传递时,有确认、窗口、重传、拥塞控制机制,在数据传完后,还会断开连接用来节约系统资源。

    TCP的缺点: 慢,效率低,占用系统资源高,易被攻击。TCP在传递数据之前,要先建连接,这会消耗时间,而且在数据传递时,确认机制、重传机制、拥塞控制机制等都会消耗大量的时间,而且要在每台设备上维护所有的传输连接,事实上,每个连接都会占用系统的CPU、内存等硬件资源,而且,因为TCP有确认机制、三次握手机制,这些也导致TCP容易被人利用,实现DOS、DDOS、CC等攻击。

2. UDP的优点: 快,比TCP稍安全。UDP没有TCP的握手、确认、窗口、重传、拥塞控制等机制,UDP是一个无状态的传输协议,所以它在传递数据时非常快。没有TCP的这些机制,UDP较TCP被攻击者利用的漏洞就要少一些,但UDP也是无法避免攻击的,比如UDP Flood攻击等。

    UDP的缺点: 不可靠,不稳定。因为UDP没有TCP那些可靠的机制,在数据传递时,如果网络质量不好,就会很容易丢包。

3. 二者适用的场合

TCP: 当对网络通讯质量有要求的时候,比如:整个数据要准确无误地传递给对方,这往往用于一些要求可靠的应用,比如HTTP、HTTPS、FTP等传输文件的协议、POP、SMTP等邮件传输的协议。 在日常生活中,常见使用TCP协议的应用如下: HTTP FlashFXP、FTP Outlook、POP、SMTP Putty、Telnet、SSH QQ文件传输等。

UDP: 当对网络通讯质量要求不高的时候,要求网络通讯速度能尽量的快。 常见使用UDP协议的应用如下: QQ语音、QQ视频、TFTP、DNS解析等。

 

 

转载于:https://www.cnblogs.com/qinsafefy/p/9336829.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: Web前端开发需要掌握的网络基础知识包括: - HTML: 超文本标记语言,用于描述网页的结构 - CSS: 层叠样式表,用于控制网页的外观 - JavaScript: 用于控制网页的行为 - HTTP: 超文本传输协议,用于在浏览器和服务器之间传输数据 - HTTPS: 安全的HTTP协议,用于在浏览器和服务器之间传输加密数据 - AJAX: 异步javascript和XML,用于在网页上实现异步数据交互 - API: 应用程序编程接口,用于网页和服务器之间传输数据 - IP地址,DNS,TCP/UDP,端口号,这些都是基础网络知识 ### 回答2: Web前端开发需要掌握以下网络基础知识: 1. HTTP协议:了解HTTP协议的基本概念、请求方法、状态码、报文格式等。掌握HTTP请求和响应过程,以及常见的HTTP头部字段。 2. 网络通信基础:了解TCP/IP协议族的基本原理和工作机制,包括IP地址、域名解析、端口等。理解TCP和UDP协议的区别和特点。 3. DNS解析:了解域名系统(DNS)的作用和工作原理,包括域名解析过程、DNS缓存等。掌握如何配置和管理域名。 4. 网络安全:了解网络安全的基本概念,包括跨站脚本攻击(XSS)、跨站请求伪造(CSRF)、SQL注入等常见的网络安全问题。学习如何防范和处理这些安全漏洞。 5. WebSocket:了解WebSocket协议的基本原理和特点,能够使用WebSocket实现实时通信功能。 6. 前后端交互:掌握AJAX技术,了解JSON、XML等数据格式的基本概念。能够使用XMLHttpRequest对象向服务器发送异步请求,获取并处理服务器返回的数据。 7. 网络调试工具:掌握常用的网络调试工具,如浏览器开发者工具、Postman等,能够利用这些工具进行网络请求的调试和分析。 8. 前端性能优化:了解前端性能优化的基本原则和常用方法,如压缩资源、合并文件、使用CDN等。能够通过优化网络请求和渲染流程来提升网页的加载速度和响应性能。 总之,掌握了这些网络基础知识,能够更好地理解Web前端开发网络交互过程,解决常见的网络问题,并进行性能优化,从而提供更好的用户体验。 ### 回答3: Web前端开发需要掌握以下网络基础知识: 1. HTTP协议:了解HTTP协议的工作原理和常见的请求方法(GET、POST等),了解HTTP头部信息和状态码的含义,以及HTTP的持久连接和缓存等相关概念。 2. HTML和CSS:熟悉HTML和CSS的基本语法和常用标签,了解HTML文档的结构和CSS样式的应用方式,能够根据设计稿实现页面的布局和样式。 3. JavaScript:熟悉JavaScript的基本语法和常用的DOM操作,了解事件处理、Ajax和跨域请求等基本概念,能够编写简单的交互逻辑和动态网页。 4. 网络安全:了解常见的网络攻击方式(如XSS和CSRF)以及相应的防御方法,熟悉HTTPS协议的工作原理和使用方式,能够编写安全性较高的前端代码。 5. 前端性能优化:了解前端页面加载的过程和性能优化的方法,包括减少HTTP请求、压缩和合并静态资源、使用缓存、异步加载等。 6. 浏览器原理:了解浏览器的工作原理,包括渲染引擎的处理流程、页面解析和布局、渲染性能优化等,能够针对不同浏览器进行兼容性处理。 7. 前端框架和工具:熟悉常用的前端框架和工具(如React、Vue、Webpack等),了解它们的工作原理和使用方式,能够快速搭建和优化项目。 综上所述,掌握以上网络基础知识能够使前端开发者更好地理解和应用Web技术,提高开发效率和网页性能,并且能够处理一些网络安全和兼容性问题

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值