欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  网络运营

计算机网络和http权威指南读书笔记

程序员文章站 2022-03-05 15:53:51
计算机网络笔记 网络层 网络层向上提供无连接的,尽最大努力交付的数据报服务 网络层不提供数据质量承诺 物理层使用的中间设备叫转发器repeater 数据链路层叫网桥bridge 网...

计算机网络笔记

网络层

网络层向上提供无连接的,尽最大努力交付的数据报服务

网络层不提供数据质量承诺

物理层使用的中间设备叫转发器repeater

数据链路层叫网桥bridge

网络层叫路由器router

网络层以上叫网关gateway

互联网由多种异构网络互联而成?

分类的ip地址

配套使用的协议:

ARP:地址解析协议

RARP:逆向地址解析协议

ICMP:网络控制报文协议

IGMP:国际组管理协议

ip地址被分为若干固定类 分别有ip地址 = [网络号,主机号]

ABC类都是单播地址,一对一通信

A类地址 8位是网络号(第一位一定是0),24位主机号

所以,我们看到,A类Ip地址的范围是1.0.0.1—— 126.255.255.254(为什么是126?不是127?因为后七位不能全为1,作为保留地址)

B类IP地址16位网络号,16位主机号(一二位必须是10)

所以,B类地址的范围是128.0.0.1-191.255.255.254

C类ip地址24位网络号,8位主机号,前面以110开头。所以c类的范围是192.0.0.1-223.255.255.254

D类ip地址。1110开头,是多播地址 192.0.0.1-223.255.255.254

E类 以1111开头,作为保留地址

特殊的:0.0.0.0当前主机所在的网络地址255.255.255.255当前子网

最大主机号数目的算法:2^(主机号位数)-2

比如A类那就是2^(24) – 2

IP地址在分配的时候只分配网络号,剩下的主机号由得到该网络的单位*分配

IP地址与硬件地址的区别

从层次上看:硬件地址是数据链路层和物理层使用的地址

ip地址是网络层及以上各层使用的地址,是逻辑地址

|首部|应用层数据 |

|ip地址| tcp报文 |

||首部(硬件地址| ip报文 ||

??mac帧

?注意:硬件地址,物理地址和MAC地址是同一个东西

划分子网

第一步,从 IP 中找到所属的网络,好比是去找这个人是哪个小区的;
第二布,再从 IP 中找到主机在这个网络中的位置,好比是在小区里面找到这个人。

第一步中的网络,就称之为「子网」(Subnet)。
从逻辑上来讲,一般同一子网(Subnet)是使用相同的网关。就好比,一个小区的入口。
IPv4的 IP地址是 32位的,形式如http://xxx.xxx.xxx.xxx,每一个 xxx取值都是 0 - 255。
到底是前三个 xxx 相同,就代表同一个子网,还是前两个,还是其他?这个并不一定。
就好比小区有大有小,有的小区有上千户人家,有的小区只有区区几个。
所以,就引入「子网掩码」(SubnetMask)来标识该子网的大小

关于对ip地址的理解:首先,相对于整个互联网,ip地址不是唯一的。好比中国广州市/张三和中国广州/市张三。他们用的是同样的ip地址,但是他们并不是相同的人。而且他们所在的地区也不同。子网掩码在这里就是相对而言作为一个断句 而存在的东西。告诉你,哪个是地区,哪个是人名。所以108.223.255.124/24和108.223.255.124/25是完全不一样的两个人。虽然他们用了同样的ip地址。
 

ip地址==网络号:子网号:主机号

什么是默认的子网掩码?

如果一个ip网络号不划分子网的话,那就使用默认的子网掩码。也就是说,子网就是它自己

A类:255.0.0.0

B类:255.255.0.0

C类:255.255.255.0

其实就是和他的网络号位数对应。因为那些是不可以改变的

采用子网掩码的是ip地址如何寻址的

采用三级寻址。

1.先去网络号(看你是哪一类的ip地址,子网掩码就能找到网络号)

2.找到子网号:这时候就要用到子网掩码。看到你的子网号,看你到底是广州的还是广州市的

3.主机号:看你用的是哪一台主机了。

应用层协议

UDP协议(用户数据报协议)

无连接,尽最大努力,面向报文

TCP协议(传输控制协议)

提供可靠的交付服务

面向连接的传输层协议

提供全双工通信

点对点,每个连接都有两个端点: 嵌套字socket==ip地址加上端口号

面向字节流

应用层

1.经典问题。从输入URL到页面加载完成到底发生了什么

1.拿到URL后开始域名解析

2.DNS查找 浏览器缓存操作系统缓存路由器缓存

3.开始http请求

GET http://facebook.com/ HTTP/1.1

Accept: application/x-ms-application, image/jpeg,application/xaml+xml,[...]

User-Agent: Mozilla/4.0 (compatible; MSIE 8.0; WindowsNT 6.1; WOW64;[...]

Accept-Encoding: gzip, deflate

Connection: Keep-Alive

Host: facebook.com

Cookie: datr=1265876274-[...]; locale=en_US; lsd=WW[...]; c_user=2101[...]

4 .服务器永久重定向(原因在下面)

5.浏览器跟踪重定向

6.服务器处理请求

7.服务器返回响应

8.浏览器表现页面(显示html)

9.浏览器获取嵌套在html里面的资源包括图片js css

浏览器解析HTML遇到需要下载的文件时,便再次向服务器(CDN)发送获取文件的请求。
  注意:
1. 动态页面无法缓存,静态文件允许浏览器进行缓存。
2. 静态文件本地有缓存时直接从本地读取
3. 请求响应头内包含着静态文件保存的期限,浏览器知道下载的静态文件要静默保留多久。
4. 响应头还会有静态文件的ETag(相当于版本号),当浏览器发现请求的静态文件的响应头的ETag与现有的缓存文件不符时,便会再次向服务器获取静态文件。

10.浏览器发送Ajax请求

http://igoro.com/archive/what-really-happens-when-you-navigate-to-a-url///原文

http://www.jianshu.com/p/20871477edc2//翻译

DNS是干嘛的

DNS是域名解析系统

DNS只是将Domain Name转换成IP Address,然后再使用所查到的IP Address去连接(俗称“正向解析”)。事实上,将IP Address转换成Domain Name的功能也是相当常使用到的,当login到一台Unix工作站时,工作站就会去做反查,找出你是从哪个地方连线进来的(俗称“逆向解析”)。

寻找Internet域名并将它转换为IP地址

为什么要永久重定向,而不是直接返回用户需要的内容?

为什么要重定向,而不直接返回用户想看的内容呢?(既然服务器已经经过重定向知道了用户需要什么)

  答:原因之一:与搜索引擎排名有关。你看,如果一个页面有两个地址,就像http://www.igoro.com/ 和http://igoro.com/,搜索引擎会认为它们是两个网站,结果造成每一个的搜索链接都减少从而降低排名。而搜索引擎知道301永久重定向是 什么意思,这样就会把访问带www的和不带www的地址归到同一个网站排名下。

域名是怎样定义的

mail.cctv.com其中mail是三级域名,cctv是二级,com是*

请记住,域名是按照机构划分的,和子网毛关系都没有

URL(统一资源定位符)是怎样定义的

协议://主机:端口/路径 (端口默认是80)

协议://服务器/资源(和上面一样,叫法不同而已)

HTTP协议

面向事务的协议,规定了浏览器如何向万维网请求文档以及服务器如何发送文档给客户端

每个万维网都有一个监听tcp的80窗口,判断是否有浏览器发出连接请求。收到之后就会建立tcp连接,到最后断开

TCP是面向连接的。http是面向无连接的,而且,http协议是无状态的

http的流水线:不收到前一个响应也能发出下一个请求

http非流水线:收到前一个响应才能发出下一个请求

cookie存在的意义

因为http是无状态的协议。但是为了能够记住用户。所以在cookie

之中加入了客户的唯一识别码。服务器也知道cookie位123455的用户什么时候来,什么时候访问了什么

——————完————————-


http进阶(http权威指南)

http事务的构成

由一条http请求和一条http响应构成

http报文以及报文的构成

报文是http应用程序之间发送的数据块

? 起始行报文的第一行就是起始行,在请求报文中用来说明要做些什么,在响应报文中说明出现了什么情况。

? 首部字段起始行后面有零个或多个首部字段。每个首部字段都包含一个名字和一个值,为了便于解析,两者之间用冒号(:)来分隔。首部以一个空行结束。添加一个首部字段和添加新行一样简单。

?主体空行之后就是可选的报文主体了,其中包含了所有类型的数据。请求主体中包括了要发送给Web服务器的数据;响应主体中装载了要返回给客户端的数据。起始行和首部都是文本形式且都是结构化的,而主体则不同,主体中可以包含任意的二进制数据(比如图片、视频、音轨、软件程序)。当然,主体中也可以包含文本。

GET /tools.html HTTP/1.0首部

User-agent: Mozilla/4.75 [en] (Win98; U)

Host: www.joes-hardware.com

Accept: text/html, image/gif, image/jpeg 请求头

Accept-language: en

响应报文

HTTP/1.0 200 OK

Date: Sun, o1 Oct 2000 23:25:17 GMT

Server: Apache/1.3.11 BSafe-SSL/1.38 (Unix)

Last-modified: Tue, 04 Jul 2000 09:46:21 GMT

Content-length: 403

Content-type: text/html

响应主体

Joe’s Hardware Online has the largestselection of hammers on the earth.

Drills=drills>

Joe’s Hardware has a complete line ofcordless and corded drills, as well as the latest in plutonium-powered atomicdrills, for those big around the house jobs.

...

http方法有哪些

get:请求资源

head:只返回首部。也就是试探,看一下你有没有

put:请求创建一个文件,有的话则覆盖掉

post:提交数据

trace:看原始的http请求变成什么样了

option

delete 删除某个url资源

状态码

100 continue

101 转换协议中

200--299 成功状态码

200 ok

201 created 常用于put方法,请求已经创建

202 Accept 请求已经被接受

300-399

重定向状态码

301 永久重定向

302 临时重定向

400-499

400 语法错误

401验证

403 禁止

404找不到

409 confilct

414 url太长了

410 gone 老子曾经拥有过

500-599

500 自己错误

501 老子办不到

502 bad gateway

503 我崩了

505 您的协议我没有