网络层
网络层向上提供无连接的,尽最大努力交付的数据报服务
网络层不提供数据质量承诺
物理层使用的中间设备叫转发器repeater
数据链路层叫网桥bridge
网络层叫路由器router
网络层以上叫网关gateway
互联网由多种异构网络互联而成?
配套使用的协议:
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当前子网
比如A类那就是2^(24) – 2
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
其实就是和他的网络号位数对应。因为那些是不可以改变的
采用三级寻址。
1. 先去网络号(看你是哪一类的ip地址,子网掩码就能找到网络号)
2. 找到子网号:这时候就要用到子网掩码。看到你的子网号,看你到底是广州的还是广州市的
3. 主机号:看你用的是哪一台主机了。
无连接,尽最大努力,面向报文
提供可靠的交付服务
面向连接的传输层协议
提供全双工通信
点对点,每个连接都有两个端点: 嵌套字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只是将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是顶级
请记住,域名是按照机构划分的,和子网毛关系都没有
协议://主机:端口/路径 (端口默认是80)
协议://服务器/资源 (和上面一样,叫法不同而已)
面向事务的协议,规定了浏览器如何向万维网请求文档以及服务器如何发送文档给客户端
每个万维网都有一个监听tcp的80窗口,判断是否有浏览器发出连接请求。收到之后就会建立tcp连接,到最后断开
TCP是面向连接的。http是面向无连接的,而且,http协议是无状态的
http的流水线:不收到前一个响应也能发出下一个请求
http非流水线:收到前一个响应才能发出下一个请求
因为http是无状态的协议。但是为了能够记住用户。所以在cookie
之中加入了客户的唯一识别码。服务器也知道cookie位123455的用户什么时候来,什么时候访问了什么
——————完————————-
由一条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.
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.
get:请求资源
head:只返回首部。也就是试探,看一下你有没有
put:请求创建一个文件,有的话则覆盖掉
post:提交数据
trace:看原始的http请求变成什么样了
option
delete 删除某个url资源
100 continue
101 转换协议中
200 ok
201 created 常用于put方法,请求已经创建
202 Accept 请求已经被接受
重定向状态码
301 永久重定向
302 临时重定向
400 语法错误
401验证
403 禁止
404找不到
409 confilct
414 url太长了
410 gone 老子曾经拥有过
500 自己错误
501 老子办不到
502 bad gateway
503 我崩了
505 您的协议我没有