1.网址(URL,uniform resource locator统一资源定位符)
URL的元素:http:(开头表示数据源的机制,也就是协议)+//(后面的字符串表示服务器的名称)+web服务器名+“/(目录名)+/(文件名)”(表示数据源的路径名)
例子:http://www.lab.glasscom.com/dirl1/file1.html
URL的文件名可以省略,大多数情况下都是index.html或者default.htm
2.文件传送协议(FTP,file transfer protocol)
FTP一种在上传、下载FTP文件时使用的协议。
3.DNS(domain name system,域名服务系统)
- 功能:将ip地址和服务器名称相关联。
- 组成:是由域名解析器和域名服务器组成。
关于域名服务器:域名服务器保存该网的域名以及对应的ip地址,而且还具备把域名转换为ip地址的功能。
(每个域名都有对应的ip地址,但是ip地址不一定都有域名。)
域名服务器为客户机/服务器模式中的服务器方,它主要有两种形式:主服务器和转发服务器。
- DNS是怎么工作的? 将信息分布保存在多台DNS服务器中,这些DNS服务器相互配合,从而查找到查询的信息。
- 如何在DNS服务器上注册并保存? DNS服务器中的所有信息都按照域名以分层次的结构来保存
4.域名
通常域名都是以句点(.)分隔的名称。
域名中每一额句点代表了不同层次之间的界限。
在域名中,越靠右的位置表示其层级越高。例如www.baidu.com。这个域名中,com域的下一层是baidu域,再下一层是www域。
5.服务器
但是由于需要提供高可靠的服务,因此在处理能力、稳定性、可靠性、安全性、可扩展性、可管理性等方面要求较高。
在网络环境下,根据服务器提供的服务类型不同,分为文件服务器,数据库服务器,应用程序服务器,WEB服务器等。
根据服务器档次(网络规模、服务器的综合性能)划分,分为入门级服务器、工作组级服务器、部门级服务器、企业级服务器、视频服务器。
服务器的操作系统:WINDOWS,NetWare,Unix,Linux
6."/"根目录
根目录是目录层次中最顶层的“根目录”。其实“/”本身没有名字,我们仅用“/”来表示而已。
7.HTTP的基本思路
- 首先,客户端会向服务器发送请求消息,包括“对什么(URL)”和“进行怎样的处理(方法)”
- 其次,服务器根据客户的要求进行工作,完成之后的结果放在响应消息里。
- 最后,响应消息发回客户端,客户端收到消息之后,浏览器读取所需要的内容显示出来。
8.IP地址的基本知识
由一些小的子网通过路由器连接起来组成一个大的网络(超网)。
我们现实中通常用的路由器包括集线器和路由器两部分。
- 什么是子网?子网可以理解为用集线器连接起来的几台计算机,看成一个单位,一个子网。
- 什么是网络?将子网用路由器连接起来成为一个网络。
- 什么是路由器?一种对包进行转发的设备(其中的包指的是数据,因为数据是以包的形式传送的)
- 什么是集线器?一种对包进行转发的设备,分为中继式集线器和交换式集线器两种。
- 什么是IP地址?IP地址可以看做是“……号……室”。“号”对应网络号,“室”对应主机号,这个地址的整体称为IP地址。
具体的IP地址有32个bit,8个bit(一个字节byte)为一组分为4组。
网络号和主机号连起来总共是32bit,但是这两部分不是固定的。
9.子网掩码(子网掩码涉及很多内容)
子网掩码的作用:将某个IP地址划分为网络地址和主机地址两部分。(?)同时可以表明一台主机所在的子网与其他子网的关系。
- A类地址的默认的子网掩码是255.0.0.0
- B类地址的默认的子网掩码是255.255.0.0
- C类地址的默认的子网掩码是255.255.255.0
利用子网掩码可以把大的网络划分成子网,即VLSM(可变长子网掩码),也可以把小的网络归并成大的网络即超网。
子网掩码的设定规则:
子网掩码的长度为32位,左边是网络位,用二进制“1”表示,1的数目等于网路位的长度;右边是主机位,用二进制“0”表示,0的数字等于主机位的长度。
目的:为了让掩码与ip地址做按位与运算时用0遮住原主机数,而不改变网络段数字,而且很容易通过0的位数确定子网的主机数。(?)
?怎么判断不同的计算机处于同一子网中:
找到该计算机的ip地址和子网掩码,把十进制转换为二进制后进行AND运算,然后再转换为十进制。如果结果一样,那么我们就可以认为这几个计算机在同一个子网里。
10.委托协议栈发送信息
收发数据的操作大致分为四个过程:
- 创建套接字(创建套接字阶段)
- 将管道连接到服务器终端的套接字(连接阶段)
- 收发数据(通信阶段)
- 断开管道并删除套接字(断开阶段)
套接字的概念:建立管道的关键在于管道两端的数据入口,这些出入口成为套接字。
- 描述符:应用程序用来识别套接字的机制
- IP地址和端口号:客户端和服务器之间用来识别对方套接字的机制
11.创建套接字
创建套接字的过程:应用程序调用socket申请创建套接字,协议栈根据应用程序的申请执行创建套接字的操作。
在创建套接字时,首先分配一个套接字所需的内存空间,然后向其中写入初始状态。
浏览器、邮件等一般应用程序收发数据时用TCP。
DNS查询等收发较短的控制数据时用UDP。
协议栈和套接字的关系:协议栈是根据套接字中记录的控制信息来工作的。
12.网卡
电脑网卡是工作在链路层的网络组件,是局域网中连接计算机和传输介质的接口。不仅能实现与局域网传输介质之间的物理连接和电信号匹配,还涉及帧的发送与接收、帧的封装与拆封、介质访问控制、数据的编码与解码以及数据缓存的功能等。
因网络上的数据率和计算机总线上的数据率不相同,所以网卡里还有对数据进行缓存的储存芯片。
网卡的功能:进行串行/并行转换
- 网卡和局域网之间的通信:通过电缆或双绞线以串行传输方式进行的
- 网卡和计算机之间的通信:通过计算机主板上的I/O总线以并行传输方式进行。
13.协议栈
协议栈(Protocol Stack)是指网络中各层协议的总和,其形象的反映了一个网络中文件传输的过程:由上层协议到底层协议,再由底层协议到上层协议。 协议栈在操作系统中。
使用最广泛的是英特网协议栈,由上到下的协议分别是
- 应用层(HTTP,FTP,TFTP,TELNET,DNS,EMAIL等)
- 运输层(TCP,UDP),网络层(IP)
- 链路层(WI-FI,以太网,令牌环,FDDI,MAC等)
- 物理层
协议栈和应用程序之间的具体交流过程:在接收数据的过程中,协议栈会检查收到的数据块和TCP头部的内容,如果没有数据丢失就返回ADK号。然后协议栈将数据块暂时存在接收缓冲区中,并将数据块按照顺序连接起来还原原来的数据,最后将数据交给应用程序。具体来说,协议栈是复制数据到应用程序指定的内存地址中,然后将控制流交回给应用程序。
14.负责保存控制信息的头部
头部的类型:TCP头部,以太网头部(MAC头部),IP头部
头部的作用:记录和交换控制信息。
存放数据的数据包的构成:(从左到右顺序)以太网和IP的控制信息——TCP的控制信息——数据块
只有控制信息的数据包的构成:(从左到右顺序)以太网和IP控制信息——TCP的控制信息
通信操作中使用的控制信息分为两类:
- 头部中的记录信息
- 套接字(协议栈中的内存空间)中记录的信息
15.连接阶段(将管道连接到服务器终端的套接字)
连接操作的第一步是在TCP模块出处创建表示连接操作信息的头部。
通过TCP头部中的发送方和接收方端口号就可以找到连接的套接字。
在创建套接字之后,应用程序就会调用connect,随后协议栈会将本地的套接字与服务器的套接字进行连接。
16.收发数据(通信阶段)
数据收发操作是从应用程序调用write将要发送的数据交给协议栈开始的。
协议栈接收数据后执行发送操作:
1.协议栈只会关注应用程序发过来的数据长度。协议栈并不一定接收到数据之后就立刻发送,它先把数据存放到内部的缓冲区里,并等待应用程序的下一段数据。
到底什么时候发送呢,协议栈还是有它判断的标准的:
MTU:一个网络包的最大长度,以太网中一般为1500字节。
MSS:除去头部之后,一个网络包所能容纳的TCP数据的最大长度。
2.如果数据较大的话,发送缓存区中的数据会被以MSS长度为单位拆分,拆分出来的每块数据会被放进单独的网络包中。拆分之后,当判断需要发送这些数据时,就会在每一块数据前面加上TCP头部,并根据套接字中记录的控制信息标记发送方和接收方的端口号,然后交给IP模块来执行发送数据的操作。
3,怎么确定网络包已经被接收了呢?使用ACK号确定网络包已接收
通过“序号”和“ACK号”可以确认接收方是否接收到了网络包。(这是一个双向交互的机制)
17.接收HTTP响应消息
浏览器对于web服务器返回响应消息,需要调用read程序来获取响应消息。控制流程会通过read转移到协议栈,然后协议栈会执行接下来的操作。
18.从服务器断开到连接套接字
当完成数据发送的一方会发起断开过程。
(以下以服务器为例)
- 服务器一方的应用程序会调用Socket库的close程序
- 服务器的协议栈会生成包含断开信息的TCP头部
- 协议栈会委托IP模块向客户端发送数据,同时服务器套接字会记录下断开操作的消息。
(以下以客户端为例)
- 收到服务器发来的TCP头部,客户端的协议栈会将自己的套接字纪委进入断开操作状态
- 客户端会向服务器返回一个ACK号,来告知服务器已经收到TCP头。协议栈就会等待应用程序来取数据。
- 应用程序会调用read来读取数据。
- 客户端程序会调用close来结束数据收发操作,并且生成一个TCP包,然后委托IP发送给服务器
- 之后服务器返回ACK号,最后结束
但是最后套接字不会立刻删除。
19.包的基本知识
包的组成:包是由头部和数据两部分构成的。
头部:包的开头包含目的地址等控制信息,称为头部
数据:包装载的数据,也是包的内容
20.节点的概念
终端节点:把发送方和接收方统称为终端节点
转发节点(中间节点):转发设备
21.IP模块
IP模块负责添加两个头部:1)MAC头部:以太网用头部,包含MAC地址
2)IP头部:IP用的头部,包含IP地址
无论要收发的包是控制包还是数据包,IP对各种类型的包的收发操作都是相同的。