整合营销服务商

电脑端+手机端+微信端=数据同步管理

免费咨询热线:

HTML 链接

HTML 使用超级链接与网络上的另一个文档相连。几乎可以在所有的网页中找到链接。点击链接可以从一张页面跳转到另一张页面。

HTML 链接

如何在HTML文档中创建链接。

(可以在本页底端找到更多实例)

HTML 超链接(链接)

HTML使用标签 <a>来设置超文本链接。

超链接可以是一个字,一个词,或者一组词,也可以是一幅图像,您可以点击这些内容来跳转到新的文档或者当前文档中的某个部分。

当您把鼠标指针移动到网页中的某个链接上时,箭头会变为一只小手。

在标签<a> 中使用了href属性来描述链接的地址。

默认情况下,链接将以以下形式出现在浏览器中:

  • 一个未访问过的链接显示为蓝色字体并带有下划线。

  • 访问过的链接显示为紫色并带有下划线。

  • 点击链接时,链接显示为红色并带有下划线。

注意:如果为这些超链接设置了 CSS 样式,展示样式会根据 CSS 的设定而显示。

HTML 链接语法

链接的 HTML 代码很简单。它类似这样::

<a href="url">链接文本</a>

href 属性描述了链接的目标。.

实例

<a href="http://www.runoob.com/">访问菜鸟教程</a>

上面这行代码显示为:: 访问菜鸟教程

点击这个超链接会把用户带到菜鸟教程的首页。

提示: "链接文本" 不必一定是文本。图片或其他 HTML 元素都可以成为链接。

HTML 链接 - target 属性

使用 target 属性,你可以定义被链接的文档在何处显示。

下面的这行会在新窗口打开文档:

实例

<ahref="http://www.runoob.com/"target="_blank">访问菜鸟教程!</a>

HTML 链接- id 属性

id属性可用于创建在一个HTML文档书签标记。

提示: 书签是不以任何特殊的方式显示,在HTML文档中是不显示的,所以对于读者来说是隐藏的。

实例

在HTML文档中插入ID:

<a id="tips">有用的提示部分</a>

在HTML文档中创建一个链接到"有用的提示部分(id="tips")":

<a href="#tips">访问有用的提示部分</a>

或者,从另一个页面创建一个链接到"有用的提示部分(id="tips")":

<a href="http://www.runoob.com/html/html-links.html#tips">

访问有用的提示部分</a>

基本的注意事项 - 有用的提示

注释: 请始终将正斜杠添加到子文件夹。假如这样书写链接:href="http://www.runoob.com/html",就会向服务器产生两次 HTTP 请求。这是因为服务器会添加正斜杠到这个地址,然后创建一个新的请求,就像这样:href="http://www.runoob.com/html/"。

图片链接

如何使用图片链接。

在当前页面链接到指定位置

如何使用书签

跳出框架

本例演示如何跳出框架,假如你的页面被固定在框架之内。

创建电子邮件链接

本例演示如何如何链接到一个邮件。(本例在安装邮件客户端程序后才能工作。)

建电子邮件链接 2

本例演示更加复杂的邮件链接。

HTML 链接标签

标签描述
<a>定义一个超级链接

如您还有不明白的可以在下面与我留言或是与我探讨QQ群308855039,我们一起飞!

、通常访问的网站是保存在远程的服务器还是本地电脑,你是怎么判断的?

保存在远程的服务器,判断的标准和依据在网络是否连通的情况下能否正常访问。

二、什么叫服务器?

一台运行在网络上有着专门的用途计算机。比如网站服务器、数据库服务器、FTP服务器、游戏服务器、通讯服务器、多媒体服务器、教学服务器、……。

三、搭建属于我们自己的网站服务器

安装IIS(Internet Information Server)或APACHE来帮我们管理网站。

四、其他知识点:

1、IT,Information Technoligy,信息技术。包含硬件、通信、网络、数据传输、软件开发等领域。

2、查看本机的IP地址: 开始->运行 (windows+R)->cmd->ipconfig /all

3、WINDOWS NT:New Technoligy,新技术。包含me、95、98、XP、VISTA、2000、2003、2008、2012、2013、7。

4、UNIX:MAC IOS、ANDROID、LINUX、RED HAT LINUX。

5、打开控制面板:windows+r->control

6、IIS运行快捷键:windows+r->inetmgr (internet managerment root)

7、WEB:网页,是一个单独的页面,扩展名可以是xxx.html、xxx.htm、xxx.jsp、xxxx.aspx、……。

8、WEBSITE:网站,围绕一个主题所有网页的集群。

9、本机的IP地址:127.0.0.1,或本机的域名:localhost

10、域名:本身就是一个无意义的字符串,只是为了方便人们记忆和访问对应的网站而提出的概念。

11、测试网络是否连通指令:ping 目标域名。

12、网站访问请求相应的流程:

第一大历史阶段的流程

WEB2.0阶段而是这样的流程

13、访问完整流程格式:

以访问www.cwhello.com,由域名提供商解析成完成在以下格式

http://服务器IP地址:端口/访问网站下具体哪一个页面,例如:

http://123.112.113.114:80/index.php

http:// 超文本传输协议,访问服务器的前缀,代表访问的是网站,而不是其他的。又比如ftp:// 文件传输协议,代表访问的服务器是文件服务器。

端口(Port):就相当于刚才例子的水龙头,控制资源的打开与关闭。默认web 80,和前缀一起省略;ftp 21、MS SQL 1433、mysql 3306

首页(扉页):在网站中,选择其中一个页面布局、设计非常精美,让用户留下美好的影响,类似与门面,这个页面称为首页。一般起名为index.xxxx、default.xxx。在服务器中可以进行设置,顺序是从上往下。

14、访问控制

目录浏览权限:没有设置首页,访问时直接指明域名,会显示网站路径。

访问网站常见的错误代码

403 没有访问权限 Deny(拒绝) Access(访问) Forbidden(不允许)

404 路径错误

500 内部代码错误,比如PHP等

15、API,Application Programm Interface,应用程序接口。

16、DLL,Dynamic Linked Libarary,动态链接库。

17、PHP最佳运行环境:LAMP=Linux +Apache+Mysql+PHP

WAMP=WINDOWS+APache+Mysql+php

18、APACHE安装配置:

默认网站根目录是 安装目录/htdocs 下

配置文件 安装目录/conf/httpd.conf

修改配置文件可以实现

网站根目录documentroot ,路径设置不能有反斜杠\,修改网站根目录以后默认没有访问,解决办法:

1.修改directory 节点后面的路径为网站根目录

2.或者直接修改directory节点下权限allow from all

修改端口:listen 1234

首页支持:directoryindex index.html index.php

添加对PHP的解析:

LoadModule ph5_module “对应版本apache的动态链接库”

AddType application/x-httpd-php .php

小猿的某同事不甘于现状,近期到处投简历面试。某天,小猿只见某灰头土脸、唉声叹气,于是小猿本着看热闹不嫌事儿大的心态,一脸坏笑凑上去问:“大佬,最近面试咋样,是不是都拿好几个offer了~^_^”,某答道:“什么呀,面个试咋就这么难,一道面试题硬是让面试官扯出了整个计算机网络知识图谱,也是没谁了~”,小猿好奇问:“啥题,啥题~”,某答:“烂大街的一道题,面试前也准备了,唉,你说为啥面试官就能从这道题目扯出一堆题目...”(此处省略一万字)

接下来小猿就给大家说说某遇到的这道题,还有它牵扯出的整个计算机网络的知识图谱。废话不多说,直接上题目

题目描述一:请说说HTTP请求的整个过程

题目描述二:当你在浏览器中输出某个URL,按下回车后都经历了什么样的流程

题目描述三:请简单介绍一下HTTP是怎么工作的

相信各位猿对这道题应该并不陌生,而且网上一搜一堆的讲解与答案,但是某遇到的这个大牛面试官,却可以从某的回答中延伸出更多的问题,如果想要过关,还是要对整个计算机网络的知识体系有比较深刻的理解才行。下面先贴出小猿对这个题目的理解和可能从这道题目引出的计算机网络的知识点,然后小猿对这些知识点慢慢的给大家分析。

小猿对题目的理解:

  1. DNS解析:如果URL中是网址,需要向对这个网址进行域名解析,得到相应的IP地址

  2. TCP连接:根据IP,找到对应的服务器,通过TCP的三次握手建立连接

  3. 发送HTTP请求:建立TCP连接后发起HTTP请求

  4. 服务器处理请求并返回HTTP报文:服务器根据请求参数得到返回结果,并返回HTTP报文

  5. 浏览器解析渲染页面:浏览器得到报文,解析HTML代码,并请求HTML代码中的资源(例如js、css等),然后渲染页面

  6. 连接结束:TCP4次挥手,HTTP断开连接

知识图谱

OSI七层架构

七层结构简介:

7层结构数据传输流程:

详细介绍每层的功能和

  • 应用层(Application Layer)

  1. 是计算机用户,以及各种应用程序和网络之间的接口:

  2. 是用户与网络,以及应用程序与网络间的直接接口,使得用户能够与网络进行交互式联系。

  3. 实现各种服务:该层具有的各种应用程序可以完成和实现用户请求的各种服务。

  4. 该层还负责协调各个应用程序间的工作。

  5. 应用层为用户提供的服务和协议有:文件服务、目录服务、文件传输服务(FTP)、远程登录服务(Telnet)、电子邮件服务(E-mail)、打印服务、安全服务、网络管理服务、数据库服务等。

  • 表示层(Presentation Layer)

  1. 对来自应用层的命令和数据进行解释,对各种语法赋予相应的含义,并按照一定的格式传送给会话层。

  2. 主要功能:数据格式处理、编码、压缩解压、加密解密等,具体说明如下:

    1. 数据格式处理:协商和建立数据交换的格式,解决各应用程序之间在数据格式表示上的差异。

    2. 数据的编码:处理字符集和数字的转换。例如由于用户程序中的数据类型(整型或实型、有符号或无符号等)、用户标识等都可以有不同的表示方式,因此,在设备之间需要具有在不同字符集或格式之间转换的功能。

    3. 压缩和解压缩:为了减少数据的传输量,这一层还负责数据的压缩与恢复。

    4. 数据的加密和解密:可以提高网络的安全性。

  • 会话层(Session Layer)

    其任务就是组织和协调两个会话进程之间的通信,并对数据交换进行管理,具体如下:

    1. 会话管理:允许用户在两个实体设备之间建立、维持和终止会话,并支持它们之间的数据交换。例如提供单方向会话或双向同时会话,并管理会话中的发送顺序,以及会话所占用时间的长短。

    2. 会话流量控制:提供会话流量控制和交叉会话功能。

    3. 寻址:使用远程地址建立会话连接。

    4. 出错控制:从逻辑上讲会话层主要负责数据交换的建立、保持和终止,但实际的工作却是接收来自传输层的数据,并负责纠正错误。会话控制和远程过程调用均属于这一层的功能。但应注意,此层检查的错误不是通信介质的错误,而是磁盘空间、打印机缺纸等类型的高级错误。

  • 传输层(Transport Layer)

  1. 向用户提供可靠的端到端的差错和流量控制,保证报文的正确传输。传输层的作用是向高层屏蔽下层数据通信的细节,即向用户透明地传送报文。

    1. 传输连接管理:提供建立、维护和拆除传输连接的功能。传输层在网络层的基础上为高层提供“面向连接”和“面向无接连”的两种服务。

    2. 处理传输差错:提供可靠的“面向连接”和不太可靠的“面向无连接”的数据传输服务、差错控制和流量控制。在提供“面向连接”服务时,通过这一层传输的数据将由目标设备确认,如果在指定的时间内未收到确认信息,数据将被重发。

    3. 监控服务质量。

  2. 该层常见的协议:TCP/IP中的TCP协议、Novell网络中的SPX协议和微软的NetBIOS/NetBEUI协议。

  • 网络层(Network Layer)

  1. 通过路由选择算法,为报文或分组通过通信子网选择最适当的路径

  2. 数据链路层的数据在这一层被转换为数据包,然后通过路径选择、分段组合、顺序、进/出路由等控制,将信息从一个网络设备传送到另一个网络设备。

    1. 寻址:数据链路层中使用的物理地址(如MAC地址)仅解决网络内部的寻址问题。在不同子网之间通信时,为了识别和找到网络中的设备,每一子网中的设备都会被分配一个唯一的地址。由于各子网使用的物理技术可能不同,因此这个地址应当是逻辑地址(如IP地址)。

    2. 交换:规定不同的信息交换方式。常见的交换技术有:线路交换技术和存储转发技术,后者又包括报文交换技术和分组交换技术。

    3. 路由算法:当源节点和目的节点之间存在多条路径时,本层可以根据路由算法,通过网络为数据分组选择最佳路径,并将信息从最合适的路径由发送端传送到接收端。

    4. 连接服务:与数据链路层流量控制不同的是,前者控制的是网络相邻节点间的流量,后者控制的是从源节点到目的节点间的流量。其目的在于防止阻塞,并进行差错检测。

  3. 数据链路层是解决同一网络内节点之间的通信,而网络层主要解决不同子网间的通信。例如在广域网之间通信时,必然会遇到路由(即两节点间可能有多条路径)选择问题。

  • 数据链路层(Data Link Layer)

  1. 物理层提供的比特流的基础上,通过差错控制、流量控制方法,使有差错的物理线路变为无差错的数据链路,即提供可靠的通过物理介质传输数据的方法。

  2. 该层通常又被分为介质访问控制(MAC)和逻辑链路控制(LLC)两个子层

    1. MAC子层的主要任务是解决共享型网络中多用户对信道竞争的问题,完成网络介质的访问控制;

    2. LLC子层的主要任务是建立和维护网络连接,执行差错校验、流量控制和链路控制。数据链路层的具体工作是接收来自物理层的位流形式的数据,并封装成帧,传送到上一层;同样,也将来自上层的数据帧,拆装为位流形式的数据转发到物理层;并且,还负责处理接收端发回的确认帧的信息,以便提供可靠的数据传输。

  • 物理层(Physical Layer)

  1. 利用传输介质为数据链路层提供物理连接,实现比特流的透明传输。

  2. 物理层的作用是实现相邻计算机节点之间比特流的透明传送,尽可能屏蔽掉具体传输介质和物理设备的差异。使其上面的数据链路层不必考虑网络的具体传输介质是什么。

分享一张大而全的七层协议框架图

TCP/IP协议-OSI的一种“实现”

传输控制协议TCP简介

  • 面向连接的、可靠的、基于字节流的传输层通信协议

  • 将应用的数据流分割成报文段并发送个给目标节点的TCP层,

    • 分段的长度受数据链路层MTU(最大传输单元,Maximum Transmission Unit)的限制

    • TCP单个数据报的最大长度称为最大段尺寸MSS;

    • 在TCP三次握手建立连接的时候,双方会商量传输中MSS的大小;

  • 数据包都有序号以保证消息接收的顺序,对方收到则发送ACK确认,未收到则重传

  • 使用奇偶校验和来校验数据在传输过程中是否有误

TCP报文头


  • SourcePort:源端口,占用2个字节。源端口和IP地址的作用是标识报文的返回地址。

    p.s. IP可以唯一表示一台主机,TCP协议和端口号可以唯一表示主机中的一个进程;所以我们可以根据IP地址+协议+端口号唯一表示网络中的一个进程(即Socket的工作原理)。

  • DestinationPort:目的端口,占用2个字节;指明接收方计算机上的应用程序的端口。

  • SequenceNumber(序号seq):本报文段发送的数据组的第一个字节的序号。e.g.一个报文段的序号为300,此报文段数据部分共有100字节,则下一个报文段的序号为400。所以序号确保了TCP传输的有序性。

  • AcknowledgmentNumber(确认号ack):指明下一个期待收到的字节序号,表明该序号之前的所有数据已经正确无误的收到。确认号只有当ACK标志为1时才有效。

  • offset(数据偏移):占用4bits。由于首部可能含有可选项内容,因此TCP报头的长度是不确定的,报头不包含任何任选字段则长度为20字节,4位首部长度字段所能表示的最大值为1111,转化为10进制为15,15*32/8 = 60,故报头最大长度为60字节。首部长度也叫数据偏移,是因为首部长度实际上指示了数据区在报文段中的起始偏移值。

  • Reserved(保留字节):为将来定义新的用途保留,现在一般置0。

  • TCP Flags(TCP控制位)

    • SYN:同步序号,用于建立连接过程,在连接请求中,SYN=1和ACK=0表示该数据段没有使用捎带的确认域,而连接应答捎带一个确认,即SYN=1和ACK=1。

    • ACK:确认序号标志,为1时表示确认号有效,为0表示报文中不含确认信息,忽略确认号字段。

    • FIN:finish标志,用于释放连接,为1时表示发送方已经没有数据发送了,即关闭本方数据流。

    • URG:紧急指针标志,为1时表示紧急指针有效,为0则忽略紧急指针。

    • PSH:push标志,为1表示是带有push标志的数据,指示接收方在接收到该报文段以后,应尽快将这个报文段交给应用程序,而不是在缓冲区排队。

    • RST:重置连接标志,用于重置由于主机崩溃或其他原因而出现错误的连接。或者用于拒绝非法的报文段和拒绝连接请求。

    • CWR:Congestion Window Reduced

    • ECE:ECN echo

  • Window(窗口):滑动窗口大小,用来告知发送端接受端的缓存大小,以此控制发送端发送数据的速率,从而达到流量控制。窗口大小时一个16bit字段,因而窗口大小最大为65535。

  • Checksum(校验和):奇偶校验,此校验和是对整个的 TCP 报文段,包括 TCP 头部和 TCP 数据,以 16位进行计算所得。由发送端计算和存储,并由接收端进行验证。

  • UrgentPointer(紧急指针):只有当 URG 标志置 1 时紧急指针才有效。紧急指针是一个正的偏移量,和顺序号字段中的值相加表示紧急数据最后一个字节的序号。 TCP 的紧急方式是发送端向另一端发送紧急数据的一种方式。

  • TCP Options(选项与填充)如果没有选项,则TCP头长度是20字节,TCP选项最大是40个字节。最常见的可选字段是最长报文大小,又称为MSS(Maximum Segment Size),每个连接方通常都在通信的第一个报文段(为建立连接而设置SYN标志为1的那个段)中指明这个选项,它表示本端所能接受的最大报文段的长度。选项长度不一定是32位的整数倍,所以要加填充位,即在这个字段中加入额外的零,以保证TCP头是32的整数倍。

  • Data(数据部分)TCP 报文段中的数据部分是可选的。在一个连接建立和一个连接终止时,双方交换的报文段仅有 TCP 首部。如果一方没有数据要发送,也使用没有任何数据的首部来确认收到的数据。在处理超时的许多情况中,也会发送不带任何数据的报文段。

说说TCP的三次握手

在TCP/IP协议中,TCP协议提供可靠的连接服务,采用三次握手建立一个连接

  1. 第一次握手:建立连接时,客户端发送SYN包到服务器,并进入SYN_SEND状态,等待服务器确认。这里发送的SYN包,SYN标志位为1,seq序号初始为x

  2. 第二次握手:服务器收到SYN包,必须确认客户的SYN,同时自己也发送一个SYN包给客户端,此时服务端进入SYN_RECV状态。这里服务端发送的SYN包中SYN标志位和ACK标志位都是1,seq序号初始为y,ack为x+1(表示客户端下次再发送包seq从x+1开始)

  3. 第三次握手:客户端收到服务器的SYN+ACK的包,向服务器发送确认包,此包ACK标志位1,seq序号为x+1,ack为y+1(表示服务端下一次发送数据seq从y+1开始)。此包发送完毕,客户端和服务器端都进入ESTABLISHED状态,完成三次握手,开始数据传送。

为什么需要三次握手才能建立连接

  • 为了初始化SequenceNumber

  • 为了防止服务器端开启一些无用的连接增加服务器开销以及防止已失效的连接请求报文段突然又传送到了服务端,因而产生错误。

三次握手的隐患-SYN Flood

问题描述

  • Server收到Client的SYN,回复SYN-ACK的时候未收到ACK确认

  • Server不断重试直至超时,Linux默认等待63秒才断开连接(Linux默认重试5次,每次等待时间翻倍,第一次重试前等待时间为1秒,第五次重试后等待时间是32秒,然后才断开连接)

  • 恶意攻击者,不断向服务端发送SYN请求后立刻下线,服务器端会等待63秒后才断开连接,进而导致服务端资源耗尽,让正常的连接请求不能处理

针对SYN Flood的防护措施

针对上述问题的解决办法

  • SYN队列满后,通过tcp_syncookies参数回发SYN Cookie

  • 如果是正常连接,Client会回发SYN Cookie给服务端;如果是恶意攻击,因为Client已经下线,则不会返回。

  • 正常连接返回SYN Cookie后,可以直接建立连接

建立连接后,Client出现故障怎么办

保活机制

  • 向对方发送保活探测报文,如果未收到响应则继续发送

  • 尝试次数达到保活探测数仍未收到响应,则中断连接

TCP四次挥手

挥手是为了终止连接,TCP采用四次挥手来释放连接

  1. 第一次挥手:Client发送一个FIN,用来关闭Client到Server的数据传送,Client进入FIN-WAIT_1状态;

  2. 第二次挥手:Server收到FIN后,发送一个ACK给client,确认序号为收到序号+1(与SYN相同,一个FIN占用一个序号),Server进入CLOSE_WAIT状态;Client接收到Server的FIN之后,进入FIN_WAIT_2状态;

  3. 第三次挥手:Server发送一个FIN,用来关闭Server到Client的数据传送,Server进入LAST_ACK状态;

  4. 第四次挥手:Client收到FIN后,Client进入TIME_WAIT状态,接着发送一个ACK给Server,确认序号为收到序号+1,Server进入CLOSED状态,完成四次握手

为什么要有TIME_WAIT状态

  • 防止上一次连接中的包,迷路后重新出现,影响新连接(经过2MSL,上一次连接中所有的重复包都会消失)

  • 可靠的关闭TCP连接。为的是确认服务器端是否收到客户端发出的ACK确认报文。当客户端发出最后的ACK确认报文时,并不能确定服务器端能够收到该段报文。所以客户端在发送完ACK确认报文之后,会设置一个时长为2MSL的计时器。MSL指的是Maximum Segment Lifetime:一段TCP报文在传输过程中的最大生命周期。2MSL即是服务器端发出为FIN报文和客户端发出的ACK确认报文所能保持有效的最大时长。

  • 服务器端在1MSL内没有收到客户端发出的ACK确认报文,就会再次向客户端发出FIN报文;

    • 如果客户端在2MSL内,再次收到了来自服务器端的FIN报文,说明服务器端由于各种原因没有接收到客户端发出的ACK确认报文。客户端再次向服务器端发出ACK确认报文,计时器重置,重新开始2MSL的计时;

    • 否则客户端在2MSL内没有再次收到来自服务器端的FIN报文,说明服务器端正常接收了ACK确认报文,客户端可以进入CLOSED阶段,完成“四次挥手”。

为什么需要四次握手

  • 因为全双工,发送方和接收方都需要FIN报文和ACK保报文

  • 建立连接时,被动方服务器端结束CLOSED阶段进入“握手”阶段并不需要任何准备,可以直接返回SYN和ACK报文,开始建立连接。释放连接时,被动方服务器,突然收到主动方客户端释放连接的请求时并不能立即释放连接,因为还有必要的数据需要处理,所以服务器先返回ACK确认收到报文,经过CLOSE-WAIT阶段准备好释放连接之后,才能返回FIN释放连接报文。

服务器出现大量CLOSE_WAIT状态的原因

如果一直保持在CLOSE_WAIT状态,那么只有一种情况,就是在对方关闭连接之后服务器程序自己没有进一步发出ack信号。换句话说,就是在对方连接关闭之后,程序里没有检测到,或者程序压根就忘记了这个时候需要关闭连接,于是这个资源就一直被程序占着。

  • 检查代码,特别是释放资源的代码

  • 检查配置,特别是处理请求的线程配置


写了这么多,请允许小猿喘口气~,今天就到这吧,未完待续...

更多精彩可以搜索公众号:隔壁王小猿(happy-gbwxy)关注,公众号留言可以获取JAVA面试宝典哦 (*^▽^*)