一、七层网络模型
  • 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. TP中的图片水印

    $img_dir = ROOT_PATH . 'public/upload/card/' . $data['jt_id']; //创建合成图片存放位置 //自动创建文件夹 if (!file_exis ...

  2. Unity Shader 效果(1) :图片流光效果

    很多游戏Logo中可以看到这种流光效果,一般的实现方案就是对带有光条的图片uv根据时间进行移动,然后和原图就行叠加实现,不过实现过程中稍稍有点需要注意的地方.之前考虑过风宇冲的实现方式,但是考虑到sh ...

  3. (转)Spring Boot(八):RabbitMQ 详解

    http://www.ityouknow.com/springboot/2016/11/30/spring-boot-rabbitMQ.html RabbitMQ 即一个消息队列,主要是用来实现应用程 ...

  4. ElasticSearch(三):Java操作ElasticSearch索引之CRUD

    package com.gxy.ESChap01; import java.net.InetAddress; import java.util.HashMap; import java.util.Ma ...

  5. centos7下kubernetes(5。部署kubernetes dashboard)

    基于WEB的dashboard,用户可以用kubernetes dashboard部署容器话的应用,监控应用的状态,执行故障排查任务以及管理kubernetes各种资源. 在kubernetes da ...

  6. 原生javascript实现回到顶部平滑滚动

    function rt() { var d = document, dd = document.documentElement, db = document.body, top = dd.scroll ...

  7. 第2章 认识JAVA虚拟机的基本结构

    2.1 虚拟机的内存划分 垃圾回收系统既回收堆,也回收方法区和直接内存 直接内存其实是一块不受JVM管理的内存,但是收到计算机内存的限制 2.2 虚拟机参数 -Xmx:虚拟机最大可用内存 2.3 堆 ...

  8. 深度学习PyTorch环境安装——mac

    参考:http://python.jobbole.com/87522/ 1.首先要安装Anaconda 1)什么是Anaconda Anaconda是Python的包管理器和环境管理器,是一个包含18 ...

  9. ORA-4031 错误故障排除与诊断[视频] (Doc ID 2016002.1)

    Copyright (c) 2019, Oracle. All rights reserved. Oracle Confidential.     ORA-4031 错误故障排除与诊断[视频] (Do ...

  10. Android-App性能测试工具GT的使用方法

    参考链接: https://www.cnblogs.com/syw20170419/p/7228145.html?utm_source=itdadao&utm_medium=referral ...