常见问题:计算机网络/完整HTTP访问

域名解析

  1. 以浏览器进行HTTP访问为例,首先搜索自身DNS缓存(一般缓存1000条左右,仅缓存1分钟),若有且未过期,结束。
  2. 若未找到,则搜索操作系统的DNS缓存。
  3. 若未找到,尝试读取hosts文件。
  4. 若未找到,发起向本地首选DNS服务商。DNS服务商优先找自身缓存,未找到,则找根域名的ip(如com),根域名再逐级查找(如cnblogs.com),直到找到。

与服务器建立连接

整体流程简述

发送方:应用层(HTTP)-传输层(TCP)-网络层(IP)-链路层

  • HTTP协议: 生成对目标服务器目标资源的HTTP请求报文。
  • TCP协议: 将HTTP请求报文分割成报文段,打序号和端口号,将每个报文段可靠传输。
  • IP协议: 给TCP报文增加IP头部,转发给链路层。
  • 链路层: 利用ARP服务给IP增加目标MAC地址,处理物理层细节。

接收方:链路层-网络层(IP)-传输层(TCP)-应用层(HTTP服务器)

  • 链路层: 消去以太网首部。
  • IP协议: 消去IP头部。
  • TCP协议: 接收收到的报文,按序号以原来的顺序重组报文段。
  • HTTP协议: 根据收到的请求报文,访问目标资源。
    接收方同样利用TCP/IP通信协议向用户回传。

链路层

  1. 处理连接网络的硬件部分。如操作系统中的设备驱动。
  2. ARP协议提供IP-MAC地址的映射。

ARP采用一问一答的形式,较为简单。发送方向ARP服务发出请求获取IP对应的MAC地址,并将其缓存在ARP缓存中。发送方(PC1)需要向ARP服务提供自己的IP和MAC地址,以及目标的IP地址。ARP服务会用这些信息在LAN内进行广播,其目标主机(PC2)收到该广播后,会先将PC1的信息放在自己的ARP缓存,之后,以单播形式向PC1回应ARP返回。

网络层-IP协议

IP协议作用是把数据包传给对方,因此需要给数据包添加两个条件:IP地址和MAC地址。IP地址指明节点被分配到的地址,可变。MAC地址指网卡所属固定地址,通常不变。当通信双方不在同一LAN时,则无法获取目标的MAC地址。此时,通常是经过多台计算机和网络设备中转才能连接到对方。中转时,利用下一站中转设备的MAC地址来搜索下一个中转目标。此时会使用ARP协议,ARP协议可以通过通信方的IP地址反查出对应的MAC地址。

传输层-TCP协议

TCP提供字节流服务,将大块数据分割成以报文段segment为单位的数据包进行管理,其目的是更容易传送大数据。为确保送达,TCP采用三次握手方式,首先发送带SYN bit的包,对方接收后回传带SYN bit和ACK bit的包表示确认信息,发送方再回传带ACK bit的可带数据的包开始发送数据。

原文地址:https://www.cnblogs.com/cielosun/p/11428983.html

时间: 2024-09-27 04:35:09

常见问题:计算机网络/完整HTTP访问的相关文章

Java访问数据库Mysql

一.概述 本文主要介绍Java接连数据库的基本方法和步骤,并对其中的几个要点进行简要说明. 二.数据库访问步骤 在Java中连接数据库进行的访问主要有以下几个步骤: 加载数据库驱动 注册数据库驱动 建立到数据库的连接 访问数据库 首先,要调用Class.ForName()加载并注册mysql驱动程序类,加载驱动程序驱动类后,需要注册驱动程序类的一个实例,DriverManager类负责管理驱动程序,这个类提供了registerDriver()方法来注册驱动程序类的实例,并且我们不需要亲自调用这个

Winform混合式开发框架访问Web API接口的处理

小分享:我有几张阿里云优惠券,用券购买或者升级阿里云相应产品最多可以优惠五折!领券地址:https://promotion.aliyun.com/ntms/act/ambassador/sharetouser.html?userCode=ohmepe03 在我的混合式开发框架里面,集成了WebAPI的访问,这种访问方式不仅可以实现简便的数据交换,而且可以在多种平台上进行接入,如Winform程序.Web网站.移动端APP等多种接入方式,Web API的处理方式和微信提供的接口处理规则类似,也是通

DOS、DDOS、CC等完整解决方案

看看你的服务的访问日志,在防火墙中加过滤,或者在web服务器中加过滤吧.方法有以下几种. 1.对于特定的IP访问的情况,限制IP访问2.限制同一IP在单位时间内的访问次数 另一种方法是利用Iptables预防DOS脚本 #!/bin/bash netstat -an|grep SYN_RECV|awk '{print$5}'|awk -F: '{print$1}'|sort|uniq -c|sort -rn|awk '{if ($1 >1) print $2}' for i in $(cat /

php获取微信ticket和token并返回签名

jssdk.php页 <?php /* * 微信公众号后台里获取appId和appSecret,并在公众号后台=>安全中心=>IP白名单中设置当前页面服务器的IP,如果是负载均衡则需将每台子服务器IP都设置上,否则不能获取token */ class Jssdk { // 公众号的appId private $appId = 'wx97527950badbe995'; // 公众号的appSecret private $appSecret = '3482d6676db63ccacb678

ThinkPHP3.2.3集成微信分享JS-SDK实践

先来看看微信分享效果: 在没有集成微信分享js-sdk前是这样的:没有摘要,缩略图任意抓取正文图片 在集成微信分享js-sdk后是这样的:标题,摘要,缩略图自定义 一.下载微信SDK开发包 下载地址:http://demo.open.weixin.qq.com/jssdk/sample.zip 二.设置安全域名 所有的微信JS接口都只能在公众号绑定的域名下调用.登录微信公众平台,点击左边的"公众号设置",切换到"功能设置",在"JS接口安全域名"

微服务SpringCloud+Docker入门到高级实战(教程详情)

第一章 课程介绍和学习路线 1.微服务架构SpringCloud课程介绍 简介:课程介绍和课程大纲讲解,讲课风格和重点内容理解技巧 2.技术选型和学后水平 简介:课程所需基础和技术选型讲解,学完课程可以到达怎样的程度, 1.IDEA JDK8 Maven SpringBoot基础 Linux 2.理解掌握并开发SpringCloud里面主流架构和组件的基础使用,还有部分源码原理的理解 3.掌握学习的技巧和解决问题的思路 第二章 架构演进和分布式系统基础知识 1.传统架构演进到分布式架构 简介:讲

06.Curator分布式锁

锁:分布式的锁全局同步,这意味着任何一个时间点不会有两个客户端都拥有相同的锁. 1.可重入锁Shared Reentrant Lock 首先我们先看一个全局可重入的锁(可以多次获取,不会被阻塞).Shared意味着锁是全局可见的,客户端都可以请求锁.Reentrant和JDK的ReentrantLock类似,意味着同一个客户端在拥有锁的同时,可以多次获取,不会被阻塞. 1.可重入锁相关类介绍 它是由类InterProcessMutex来实现.它的主要方法: // 构造方法 public Inte

云计算技术的产生、概念、原理、应用和前景

006年谷歌推出了“Google 101计划”,并正式提出“云”的概念和理论.随后亚马逊.微软.惠普.雅虎.英特尔.IBM等公司都宣布了自己的“云计划”,云安全.云存储.内部云.外部云.公共云.私有云……一堆让人眼花缭乱的概念在不断冲击人们的神经.那么到底什么是云计算技术呢?对云计算技术的产生.概念.原理.应用和前景又在哪里? 一.云计算思想的产生 传统模式下,企业建立一套IT系统不仅仅需要购买硬件等基础设施,还有买软件的许可证,需要专门的人员维护.当企业的规模扩大时还要继续升级各种软硬件设施以

关于相对路径

如果你天真的以为"./aa.txt"就是访问当前目录下的aa.txt文件,那就错了,如果程序在某个地方使用了SetCurrrentDirectory函数, 那就你的当前目录就变了,所以你最好使用GetModuleFileName函数来设置完整的访问目录.