网络基础学习

1、url(资源定位器)的构成

协议://域名(端口号、参数、查询等)

http://zhidao.baidu.com

协议:http / https (有加密的协议https)

域名: zhidao.baidu.com(百度知道)

端口: 80/ 90 / 3000等。

https默认的端口443;http默认端口80

例:https://www.baidu.com:443(默认端口443,可以不写)

2、同源策略:为了安全考虑的一种约定

浏览器有一个很重要的概念——同源策略(Same-Origin Policy)。所谓同源是指,域名,协议,端口相同。不同源的客户端脚本(javascript、ActionScript)在没明确授权的情况下,不能读写对方的资源。必须满足协议、域名、端口都相同的情况下浏览器才同意拿数据。

简单的来说,浏览器不允许包含在腾讯页面的脚本访问阿里巴巴页面的数据资源,会受到同源策略的限制。

例如:

Index请求getNews.php的数据,浏览器会判断:协议相同(http)、域名相同(localhost),端口号(80)相同

http://localhost/lesson1/index.html

http://localhost/lesson1/getNews.php?

3DNS域名解析:域名是通过DNS服务器倒着解析的

.com 顶级域名

baidu.com (一级,按国际分类)二级域名 (按国家分类)

zhidao.baidu.com  (二)三级域名

www 二级域名前缀,表示万维网维护的

www.baidu.com,属于特殊的三级域名

zhidao.baidu.com ,属于 百度自己维护的网络地址

3.1 www拓展

最开始,Internet提供的主要服务有万维网(WWW)、文件传输(FTP)、电子邮件(E-mail)、远程登录(Telnet)等。也就是说,那个时候的www(World Wide Web)是标识这是一个需要你用浏览器来访问的网页服务,而不是需要你用telnet访问的bbs,或者ftp工具访问的文件传输服务。所以那个时候,网站主页的域名前面要用www。

baidu有多个服务区为他服务。不同的子域名对应处理不同服务的服务器。现在,把任务分配到多台服务器,不需要通过子域名来区分了。http://www.goole.com一个地址背后有多台服务器支持运作。还用www只是尊重用户习惯,方便用户看。国外其实已经不用写www了。

3.2顶级域名:分两类

按照国家分:.cn 中国,.gp日本, .hk香港

按照国际分:

.com (商业机构)

.net(从事互联网服务的机构)

.org (非赢利性组织)

.edu (教育机构)

.com.cn (国内商业机构)

.net.cn (国内互联网机构)

.org.cn (国内非赢利性组织)

4、端口:每个端口对应不同的服务

如果把IP地址比作一间房子 ,端口就是出入这间房子的门。真正的房子只有几个门,但是一个IP地址的端口可以有多个。浏览网页服务默认的端口号都是80,因此只需输入网址即可,不用输入“:80

5url请求详解

5.1 url请求简图

5.2 url请求流程

①浏览器通过DNS域名解析到服务IP(ping www.baidu.com)

②客户端(浏览器)通过TCP协议建立到服务器的TCP连接  (三次握手)

③客户端(浏览器)向web服务器端(HTTP服务器)发送HTTP协议包,请求服务器里的资源文档 (telnet 模拟)

④服务器向客户端发送HTTP协议应答包

⑤客户端和服务器断开(四次挥手),客户端开始解释处理HTML文档

5.2.1 三次握手,报文交换,TCP链接

①先Client端发送连接、请求报文。

②Server端接受连接后回复ACK报文,并为这次连接分配资源。

③Client端接收到ACK报文后也向Server端发送ACK报文,并分配资源,这样TCP连接就建立了。

5.2.2 四次挥手,关闭TCP链接

①Client端发起中断连接请求,也就是发送FIN报文。Server端接到FIN报文后,意思是说"我Client端没有数据要发给你了",但是如果你还有数据没有发送完成,则不必急着关闭(Socket),可以继续发送数据。

②server发送ACK,"告诉Client端,你的请求我收到了,但是我还没准备好,请继续等我的消息"。

wait:这个时候Client端就进入FIN_WAIT状态,继续等待Server端的FIN报文。

③当Server端确定数据已发送完成,则向Client端发送FIN报文,"告诉Client端,好了,我这边数据发完了,准备好关闭连接了"。

④Client端收到FIN报文后,"就知道可以关闭连接了,但是他还是不相信网络,怕Server端不知道要关闭,所以发送ACK后进入TIME_WAIT状态,如果Server端没有收到ACK则可以重传。“,Server端收到ACK后,"就知道可以断开连接了"。Client端等待了2MSL后依然没有收到回复,则证明Server端已正常关闭,那好,我Client端也可以关闭连接了。Ok,TCP连接就这样关闭了!

5.2.3  TCP/UDP协议

①面向连接的TCP:微信,先加好友,再聊天

TCP(Transmission Control Protocol,传输控制协议)是基于连接的协议,也就是说,在正式收发数据前,必须和对方建立可靠的连接。一个TCP连接必须要经过三次“对话”才能建立起来,其中的过程非常复杂,我们这里只做简单、形象的介绍,你只要做到能够理解这个过程即可。

②面向非连接的UDP协议:短信,知道号码就可以,实时语音

“面向非连接”就是在正式通信前不必与对方先建立连接,不管对方状态就直接发送。与手机短信非常相似:你在发短信的时候,只需要输入对方手机号就OK了。

UDP(User Data Protocol,用户数据报协议)是与TCP相对应的协议。它是面向非连接的协议,它不与对方建立连接,而是直接就把数据包发送过去!

6、应用层协议: http https

超文本传输协议(HTTP,HyperText Transfer Protocol)是互联网上应用最为广泛的一种网络协议。

HTTPS(全称:Hyper Text Transfer Protocol over Secure Socket Layer),是以安全为目标的HTTP通道,简单讲是HTTP的安全版。

上面的协议建立客户端与服务器端的连接,方便两者进行沟通。

为什么要有此协议呢,让计算机之间按照规矩说话,你问我答,你怎么问我怎么答,否则计算机各说各话,没办法沟通。

如何沟通呢?  让我们来了解一下http报文吧

7http (请求报文,响应报文)通过报文进行沟通

7.1 请求报文:请求头、请求行、请求主体

请求行: 请求方法(GET POST DELETE HEAD TRACE OPTION);请求资源 (URL) ;请求协议版本(HTTP/1.1)

请求头: http://tools.jb51.net/table/http_header

请求主体: 表单提交数据如:name=aimee&age=18;

7.2  响应报文:响应头、响应行 、响应主体

响应行:响应协议版本号(HTTP/1.1);响应状态码  (200);响应状态文(0K)http://tool.oschina.net/commons?type=5(响应状态码)

响应头:http://tools.jb51.net/table/http_header

响应主体:‘sign success’ (注册成功)

7.2.1 状态码


状态码


定义


说明


1xx


信息


接到请求继续处理


2xx


成功


成功的收到,理解,接受


3xx


重定向


为了完成请求需要进行另一部措施(如直接重浏览器缓存获取资源,或跳转到其他页面)


4xx


客户端错误


请求语法有错误,不能完全符合要求


5xx


服务器错误


服务器无法完成明显有效的请求

常见的http状态码

成功状态码:

200 服务器成功返回内容

301/2 临时/永久重定向

304 资源未被修改过

失败状态码:

404 请求内容不存在

500 服务器暂时不可用

503 服务器内部错误

8、请求方法  GETPOST 的区别?

在http协议里实际上没有区别!

①请求方式不一样,get,请求数据;post,推数据

②GET 使用URL 或Cookie 传参,而POST将数据,放在BODY中。 ? NAME = ‘CST’&AGE=18

③都有长度限制,post可以传输的数据比get多。get将数据拼接在url中,早期浏览器会对URL长度进行限制(浏览器URL输入框);post通过Content-Length限制了长度。

④POST比GET安全。GET在url中,直接就能看到,POST放在相应体里,通过控制台也可以看到,只能说相对安全。对于小白很安全,对于黑客,都不安全。

9、浏览器缓存机制

工作原理:是在HTTP Response中添加ETags信息。当客户端再次请求该资源时,将在HTTP Request中加入If-None-Match信息(ETags的值)。如果服务器验证资源的ETags没有改变(该资源没有改变),将返回一个304状态;否则,服务器将返回200状态,并返回该资源和新的ETags。

304:重定向

请求头中:

if-None-Match: (匹配etag  如果它修改了 不取缓存)

If-Modified-Since:将先前服务器端发过来的最后修改时间戳发送回去

响应头中:

Etag;last-Modified (服务器最后修改的时间)和 etag 配合使用

Date: 服务器响应内容日期

Cache-control:内容缓存时间

no-cache   不被缓存的,只不过每次在向客户端(浏览器)提供响应数据时,缓存都要向服务器评估缓存响应的有效性。

no-store 用于防止重要的信息被无意的发布。在请求消息中发送将使得请求和响应消息都不使用缓存。 根据缓存超时

max-age 指示客户机可以接收生存期不大于指定时间(以秒为单位)的响应。

min-fresh 指示客户机可以接收响应时间小于当前时间加上指定时间的响应。

max-stale 指示客户机可以接收超出超时期间的响应消息。如果指定max-stale消息的值,那么客户机可以 接收超出超时期指定值之内的响应消息。

Expires:内容保质期,表示存在时间,允许客户端在这个时间之前不去检查(发请求),等同max-age的效果。但是如果同时存在,则被cache-control的max-age覆盖。

网站如何统计用户从何点击而来

Referer中会记录当前网页从哪个网页跳转过来(比如百度搜索,搜狗搜索)

referer:如果从浏览器地址栏里直接输入地址请求头没有referer

原文地址:https://www.cnblogs.com/wangzhenling/p/8799040.html

时间: 2024-10-31 10:47:21

网络基础学习的相关文章

Docker 学习笔记【2】 Docker 基础操作实,Docker仓库、数据卷,网络基础学习

Docker 学习笔记[3] Docker 仓库实操,创建私有仓库,实操数据卷.数据卷容器,实操 网络基础  ---------高级网络配置和部分实战案例学习 ============================================================= Docker 学习笔记[1]Docker 相关概念,基本操作--------实操记录开始 ============================================================= 被

网络基础学习---各种概念

学习网络编程书籍时遇到的各种概念性名称,一一记录以备查询时使用,顺序会比较乱. DNS:Domain  Name  System  域名系统. SSL:安全Socket ceng JSSE:Java 安全Socket 扩展 UDP:User Datagram Protocol,用户数据报协议 网络(network):是几乎可以实时相互发送和接收数据的计算机和其它设备的集合.网络通常用线缆连接,数据位转换为电磁波,通过电缆移动.另外,无线网络是通过无线电波传 输数据.许多长距离的传输会用通过玻璃纤

网络基础学习:

一.网络编址:唯一定位一台设备.类型很多:IBM,苹果各大公司都有自己的编址方式,主要使用IP编址二.IP编址:双层编址,一个IP标示一个网卡IPV4和IPV6两种,IPV4 32位长,IPV6 128位长IPV4:网络部分和主机部分网络部分:标示所属区域主机部分:标示该区域哪个主机三.点分十进制192.168.1.1四个部分,每个部分8位.四.子网掩码:确定网络部分的位数,也是32位,每一位与IP地址中每一位一一对应.IP地址中相对于子网掩码中为1的部分为网络部分.如:255.255.255.

网络基础学习笔记

一.进制转换 方法:围水桶法 128  64  32  16  8  4  2  1 二进制:(11000011)2 转化为 1  1  0  0  0  0  1  1 十进制:128+64+2+1=195 十六进制:(B5)16 转化为二进制:B5=10110101 1  0  1  1  0  1  0  1 十进制:128+32+16+4+1=181 二.OSI七层模型(开放系统互联) 1.上三层贴近用户,下四层贴近硬件. 2.下四层用于数据传输,上三层用于服务用户. 层数    名称 

网络基础学习(一)网络基础

1.七层网络模型 以客户端向服务端发送“hello”为例子,来说明网络传输的过程. 应用层      //用户把字符串“hello”转化成二进制流传输给传输层    [ hello  => 110110001100101110110011011001101111] 表示层 会话层 传输层     //以TCP为例说明,  [ TCP首部|110110001100101110110011011001101111] 网络层     //以IP协议为例说明,必要时拆分数据    [ IP首部|TCP首

Web及网络基础学习(一)

2019.10.16 1.TCP.IP分层  应用层.网络层.传输层.数据链路层 2.各层讲解 应用层 决定了向用户提供应用服务时通信的活动.例如FTP(File Transfer Protocol 文件传输协议)和DNS(Domain  Name System 域名系统)以及HTTP协议 传输层  提供处于网络连接中的两台计算机之间的数据传输.有两个性质不同的协议:TCP(Transmission Control Protocol 传输控制协议)和UDP(User Data Protocol

CCNA Cisco网络基础学习(一)

输入“?”显示全部帮助输入“命令?”显示完整命令单词输入“命令 ?”显示命令 可用的参数信息按“table”完成命令全部单词按“上翻或下翻”显示用过的命令按“ctrl+z”离开配置模式输入“end”直接返回特权模式 Router> \用户执行模式Router>enable \进入特权执行模式Switch#show running-config \该关键字指定要将运行配置作为输出结果显示.Switch(config-if)#description MainHQ Office Switch \使用

网络基础学习笔记--cidr

ip地址: 255.255.255.255 32位的地址 子网掩码 255.255.255.0  ip:198.162.0.1  表示198.162.0.0-198.162.0.255 台主机为单元的子网 告诉我们的ip可以访问的范围 255.255.255.0 二进制 11111111 11111111 11111111 00000000 ip分为网络地址和主机地址,子网掩码1所代表的是占用的网络地址,0覆盖的则是主机地址. CDIR /1-32 的任意划分 网络地址和主机地址 子网掩码就是划

Python 基础学习 网络小爬虫

<span style="font-size:18px;"># # 百度贴吧图片网络小爬虫 # import re import urllib def getHtml(url): page = urllib.urlopen(url) html = page.read() return html def getImg(html): reg = r'src="(.+?\.jpg)" pic_ext' imgre = re.compile(reg) imgli