一、七层网络模型
  • http协议运行在应用层

 

二、TCP-UDP

  1. TCP、UDP协议的区别

  2. 一次Http 请求,这个过程都发生了什么

  3. TCP 协议如何保证可靠传输

  4. HTTP和HTTPS的区别

  5. TCP三次握手和四次挥手、

  6. 常见的状态码。

 

2.1 TCP-UDP 区别

  • UDP及UDP使用场景
    传送数据之前不需要先建立连接,直接向目标机器发送数据。远地主机在收到 UDP 报文后,不需要给出任何确认。UDP 报文可能丢失,但是在视频流、直播流 等场景下 UDP 工作非常有效率(即时通信,不在乎数据丢失,和安全)如 视频 、直播等

  • TCP 及TCP 使用场景
    面向连接的服务。先连接再传数据,数据传送结束后要释放连接。 TCP 不提供广播或多播服务。由于 TCP 要提供可靠的,面向连接的运输服务(TCP的可靠体现在TCP在传递数据之前,会有三次握手来建立连接,而且在数据传递时,有确认、窗口、重传、拥塞控制机制,在数据传完后,还会断开连接用来节约系统资源),这一难以避免增加了许多开销,如确认,流量控制,计时器以及连接管理等。这不仅使协议数据单元的首部增大很多,还要占用许多处理机资源。TCP 一般用于文件传输、发送和接收邮件、远程登录等场景。(信息安全比较重要的数据传输)

 

2.2 一次Http请求都发生了什么

  1. 用户浏览器输入网址

  2. 浏览器拿到网址去请求IP

  3. 向目标IP 发送TCP连接 3次握手

  4. 服务器解析请求,并返回处理好的 html 页面(字符串)

  5. 浏览器按照规则解析渲染画面

  6. 连接结束

第一点:无

 

第二点:浏览器解析用户输入网址的过程顺序为:

先检查本地是否有对应的IP地址,找到就返回。找不到向上一级DNS服务器请求,直到找到或 根节点。
 
浏览器缓存--> 系统缓存--> 路由器缓存--> ISP DNS缓存--> 从根域名服务器递归搜索
都没找到就返回错误

第三点:三次握手


 
第一次握手:发送端先发送一个带SYN (synchronize) 同步标志的数据包给 Server,在一定时间内等待接收回复
 
第二次握手:服务端接收到SYN数据包后,返回一个带 SYN/ACK (acknowledgement charactor) 确认字符 标志的数据包来表示确认收到消息。
 
第三次握手:接收方接收到Server的确认消息后,再发送一个带ACK标志的数据包给接收端,表示握手成功
 
注意:上述过程都有一个等待时间,如果在等待时间内Server、或者Client 没有回复,本次请求视作失败,再次请求。Server没有回复的原因可能是栈满了

- 建立连接成功后,浏览器向WEB服务器发送一个HTTP请求

三次握手的作用:

  • 目的是建立可靠的通信信道,说到通讯,简单来说就是数据的发送与接收,而三次握手最主要的目的就是双方确认自己与对方的发送与接收是正常的。
  1. 第一次握手:Client 什么都不能确认;Server 确认了对方发送正常

  2. 第二次握手:Client 确认了:自己发送、接收正常,对方发送、接收正常;Server 确认了:自己接收正常,对方发送正常

  3. 第三次握手:Client 确认了:自己发送、接收正常,对方发送、接收正常;Server 确认了:自己发送、接收正常,对方发送接收正常

  • Server传回发送端所发送的 SYN 是为了告诉发送端,接收到的信息确实就是你发送的信号。

  • 双方通信无误必须是两者互相发送信息都无误。传了 SYN,证明发送方到Server的通道没有问题,Server到发送方的通道就通过 ACK 信号来进行验证。

第四步:ngimx + uwsgi (Django) 为列 (未完成)
  1. Nginx 部分(未完成)

  2. Django部分:
    根据请求的 URL。来到Django 的路由关系映射,
    然后通过一系列 Middleware 中间件(process_request(request,))如CSRF IP黑名单过滤,爬虫过滤等中间件验证
    来到url 对应的 Views 视图函数处理。根据请求内容。去数据库、Templates 拿到数据回来进行渲染,并返回 response 结果
    response 再次通过一系列中间件验证。(process_response(request, response))最后返回给Client

第五步:浏览器渲染

浏览器拿到结果按照HTML CSS JS 进行渲染

第六步:四次挥手,断开连接

  • 客户端-发送一个 FIN,用来关闭客户端到服务器的数据传送

  • 服务器-收到这个 FIN,它发回一 个 ACK,确认序号为收到的序号加1 。和 SYN 一样,一个 FIN 将占用一个序号

  • 服务器-关闭与客户端的连接,发送一个FIN给客户端

  • 客户端-发回 ACK 报文确认,并将确认序号设置为收到序号加1

网络七层模型及TCP、UDP,一次HTTP请求都发生了什么的更多相关文章

  1. OSI网络七层模型、TCP/IP 模型(四)

    OSI 是 Open System Interconnection 的缩写,译为“开放式系统互联”. OSI 模型把网络通信的工作分为 7 层,从下到上分别是物理层.数据链路层.网络层.传输层.会话层 ...

  2. OSI七层模型与TCP/IP四层模型

    OSI七层模型与TCP/IP四层模型 OSI模型(Open System Interconnection Reference Model,缩写为OSI),全名“开放式系统互联通信参考模型”,是一个试图 ...

  3. 001-OSI七层模型,TCP/IP五层模型

    一.概述 OSI(Open System Interconnection)参考模型是国际标准化组织(ISO)制定的一个用于计算机或通信系统间互联的标准体系,一般称为OSI参考模型或七层模型. OSI/ ...

  4. OSI七层模型与TCP/IP五层模型-(转自钛白Logic)

    OSI七层模型与TCP/IP五层模型         博主是搞是个FPGA的,一直没有真正的研究过以太网相关的技术,现在终于能静下心学习一下,希望自己能更深入的掌握这项最基本的通信接口技术.下面就开始 ...

  5. OSI七层模型及TCP/IP四层模型

    1)  OSI七层模型及TCP/IP四层模型 OSI七层模型:是国际标准化组织(ISO)制定的一个用于计算机或通信系统间互联的标准体系.它是一个七层的.抽象的模型,不仅包括一系列抽象的术语或概念,也包 ...

  6. OSI 网络七层模型(笔记)

    一直以来我们都在使用着互联网,每天聊着qq,上着淘宝,但是却不了解怎么运行的呢,充满了好奇.今天同过了解来总结一下OSI网络七层模型: 上一张图 OSI (open system interconne ...

  7. 网络基础:OSI 七层模型、TCP/IP 四层模型

    1.Internet历史 1. 1968年由美国ARPA机构提出"资源共享计算机网络”,让ARPA的计算机互联起来,叫做阿帕网;2. 1974年,第一个TCP协议详细说明发布了.3. 一个 ...

  8. 网络基础七层模型与TCP/IP协议

    1.网络基础 1.1 什么是网络 网络就是计算机网络是一组计算机或网络设备通过有形 的线缆或无形的媒介如无线,连接起来,按照一定的 规则,进行通信的集合. 网络通信就是指终端设备之间通过计算机网络进行 ...

  9. Linux--网络基础(概念+协议的了解+OSI七层模型,TCP/IP五层协议,网络数据传输流程)

    网络的发展 网络的发展有下面几个阶段: 独立模式:计算机最开始是以单机模式被广泛使用的.每一台计算机都是独立的,之间不能够进行数据共享与通信 网络互联: 计算机之间可以链接在一起,完成数据共享,计算机 ...

随机推荐

  1. 如何下载 Google Play 应用的apk

    Google Play 不能直接下载apk安装包,解决办法,安装插件下载 第一步 FQ就不说了 第二步 安装google浏览器 APK Downloader插件 第三步 打开Google play网站 ...

  2. JavaScript or JQuery 获取服务器时间

    用js做时间校正,获取本机时间,是存在bug的. 使用js也可获取到服务器时间,原理是使用 ajax请求,返回的头部信息就含有服务器端的时间信息,获取到就可以了(有的IE下扔不会正常获取,还是更建议走 ...

  3. Windows Server 2016-域站点复制查询

    了解了有关站点复制概念性内容后,后续几章节我们会围绕站点复制相关内容对域控的日常复制.维护等进行简单介绍.本章为大家带来有关域控站点复制查询的相关内容,希望大家可以喜欢.站点内域控制器之间的复制拓扑由 ...

  4. [Hive_add_5] Hive 的 join 操作

    0. 说明 在 Hive 中进行 join 操作 1. 操作步骤 1.0 建表 在 hiveserver2 服务启动的前提下,在 Beeline客户端中输入以下命令 # 新建顾客表 create ta ...

  5. May 26. 2018 Week 21st Saturday

    Do what you say, say what you do. 做你说过的,说你能做的. Be honest to yourself, and be honest to those people ...

  6. Rancher学习笔记-----1.分享链接

    http://blog.csdn.net/csdn_duomaomao/article/details/76156334

  7. 《JAVA程序设计》_第二周学习总结

    20175217吴一凡 一.IDEA的安装和使用 参考老师的教程Intellj IDEA 简易教程. 1.IDEA的安装 因为我已经习惯了在Linux上敲代码,所以我决定将IDEA安装在虚拟机上. 首 ...

  8. SDOI2017 R1做题笔记

    SDOI2017 R1做题笔记 梦想还是要有的,万一哪天就做完了呢? 也就是说现在还没做完. 哈哈哈我竟然做完了-2019.3.29 20:30

  9. 应对WannaCry勒索危机之关闭445端口等危险端口——以本人Windows7系统为例

    应对WannaCry勒索危机之关闭445端口等危险端口--以本人Windows7系统为例 近日,全球范围内爆发WannaCry勒索病毒危机 我国很多大学纷纷中招.受灾严重,甚至连刘老师的电脑也-- 拿 ...

  10. 在JS中调用CS里的方法(PageMethods)

    在JS中调用CS里的方法(PageMethods) 2014年04月28日 11:18:18 被动 阅读数:2998   最近一直在看别人写好的一个项目的源代码,感觉好多东西都是之前没有接触过的.今天 ...