1.网络分层
网络协议是通过层(layer)来组织的,每一个层负责通信中的一定的功能,比如TCP/IP协议簇就是分为以下四个层。
从下网上依次是链路层(也叫数据链路层,网络接口层),网络层,传输层和应用层;下面将对这几层做基本的解释,具体的在后面会详细解释。
数据链路层主要包括相对应的操作系统的设备驱动和计算机的网络接口卡,他们一起负责处理与光缆或者其他介质的物理接口的细节问题。
网络层主要负责数据包在网络中的路由,常见的协议有IP(Internet Protocol),ICMP (Internet control message protocol) 和IGMP (Internet group management protocol)这三种协议。
传输层负责为应用层提供数据流,主要包括可靠传输的TCP和不可靠传输的UDP两种协议组成。
应用层负责处理特定应用的细节,也就是说应用层需要将真正传输的内容传递给相应的应用程序。应用层常见的协议有http tftp ftp telnet smtp等。
http:超文本传输协议是互联网上应用最为广泛的一种网络协议。设计HTTP最初的目的是为了提供一种发布和接收HTML页面的方法。
ftp和tftp都是是文件传输协议;二者的区别(这个是北邮问过我的问题)主要是ftp是可靠的,需要传送确认的协
议,同时ftp还提供了身份验证等;而tftp则不需要是一种简单的传输协议。
telnet远程登录协议。
smtp简单的邮件传输协议。
上图是一个局域网内的ftp通信的示意图;由上图可以得到如下信息:
1.ftp协议设计成客户端和服务器模式,即CS模式,同样的还有telnet协议。
2.在同一层上,双方都有对应的一个或多个协议进行通信。例如,某个协议允许T C P层进行通信,而另一个协
议则允许两个I P层进行通信。
3.我们可以发现应用层可以看做一个用户进程,而下三层则更应该是操作系统的内核的一部分。应用层不关心数
数据的具体传输流程,而只关心应用程序的细节——即为只关心传输给什么样的应用程序比如ftp还是http等等;下三
层则正好相反。
4.链路层和应用层都是被设计用来处理传输细节的,比如链路层用来使数据在以太网令环牌等等;应用层则是用
来处理具体的应用程序,比如ftp telnet等等。
2.网络的一些其他基本概念
1.连接两个网络的box叫做ip router或者router;早起这个box也叫做网关;现在网关有了新的意思,只表示不同的应用层网关,作用是连接不同的一些簇。
2.ARP (Address Resolution Protocol) 地址解析协议,将ip地址转换成mac地址; RARP (Reverse Address Resolution Protocol)则相反。
3.网络地址的表示:采用24为二进制数表示,或者采用点分十进制来表示,下图所示即为三类地址的表示。
这里再补充一个基本概念,内网ip和外网ip;外网ip是可以被路由的,内网ip则不可以:这样设计的目的是因为网络资源有限。
下面即为私有ip地址:
10.0.0.0/8:10.0.0.0~10.255.255.255
172.16.0.0/12:172.16.0.0~172.31.255.255
192.168.0.0/16:192.168.0.0~192.168.255.255
4.封装:即为向下传输的时候需要加上相应的头部,如下图所示
5.解复用:如下图所示
如上图所示:当链路层收到数据之后会卸载掉响应头部并根据此来判断应该向上传送的协议类型。其他同理。
6.CS模式的两种处理方式:
1)重复处理
1.等待请求;2.处理请求;3.服务器做出响应并发送给客户端;4.回到1.
但是问题是步骤二可能会花费较长时间,在这段时间内如果有其他的请求则无法响应。
因此有了并发处理:
等待请求,创建一个新的进程处理该请求,请求结束以后关闭该服务,原进程继续等待请求。ftp服务就是这种方式。
7.进程端口号常见的如下所示:
运行在TCP上的ftp占用端口号21;运行在TCP上的Telnet服务占用端口号23;运行在UDP上的tftp服务占用端口号69。在linux系统上可以在/etc/services文件查询到相关信息。