为什么协议分层
协议分层是为了提供一种结构化的方式来讨论系统组件。
各层只负责自己份内的事情即可,而不用关心其他层的升级更新等操作,各层只需对外提供统一的接口即可。
各层的所有协议成为协议栈protocol stack。
因特网协议栈
比如下面五层(应用层、传输层、网络层、链路层、物理层)是一个协议栈,而OSI的7个层也是一个协议栈。
应用层
应用层是网络应用程序以及他们的应用层协议。
代表性协议有HTTP、FTP、DNS
应用层的分组称为报文mesage
传输层
传输层在应用程序端点之间传送应用层报文
有两种协议TCP、UDP
传输层的分组称为报文段segment
网络层
网络层负责通过一系列路由器路由数据报到目的主机
代表性协议IP
网络层的分组称为数据报datagram
链路层
链路层接收从网络层下传的数据报并沿路径传给下一节点
代表性协议以太网、WLAN、电缆接入网的DOCSIS协议
链路层的分组称为帧
物理层
物理层负责移动比特
本层协议仍是与链路相关,但与实际传输媒介相关(比如有关双绞线、光纤的协议)
物理层移动比特
分组=头部+(相对)有效载荷字段payload field
数据在应用层封装成报文
应用层报文 + 传输层头部 = 传输层报文段
传输层报文段 + 网络层头部 = 网络层数据报
网络层数据报 + 链路层头部 = 链路层帧
链路层帧 + 吭,不用加了,物理层是最底层
数据在经过每个网络设备的时候就会将数据分组拆解到该网络设备所在的层,然后校验重新封装再发送。
应用层报文:application-layer message
传输层报文段:transport-layer segment
网络层数据报:network-layer datagram
链路层帧:link-layer frame
OSI开放互连模型
OSI开放互连模型于20世纪70年代成型。相比因特网协议栈,在应用层和网络层中多了表示层、会话层。
==表示层:==使应用程序能够解释交换数据的含义
==会话层:==数据交换的定界和同步功能
而因因特网协议栈缺少这两个层所引发的问题就交给应用开发者来解决好了,他们才是决定这些层有没有用的实际操作者。
网络攻击
Dos(Denial-of-Service attack)称为拒绝服务攻击,方式有以下几种:
弱点攻击:给容易受攻击的应用程序发送特制的报文,按一定次序发可能会导致该应用程序奔溃。
带宽泛洪:发送大量的分组以阻塞链路。
连接泛洪:产生大量半连接以消耗服务器资源。
而事实上单一源产生的攻击很容易就会被发现并过滤。所以有了后来的DDos(Distrbuted Dos),这种攻击隐蔽性高,效果明显,不容易被发现。
网络通信
1、进行通信的是进程(process)而不是程序。
2、同一个端系统间的通信由操作系统决定。
3、不同端系统间的进程通过网络交换报文而相互通信。
4、进程通过套接字(socket)的软件接口了收发报文。
5、套接字是同一端系统应用层和传输层之间的接口,是建立网络应用程序的可编程接口,因此套接字也称为应用程序和网络间的应用程序编程接口(Application Programming Interface)API
进程寻址 发送数据需要指定目的主机地址(IP)和套接字地址(端口号)。
非持续性连接 non-prosistent connection 多个请求分别使用TCP进行传输。
持续性链接 prosistent connection(默认) 多个请求共用一个TCP进行传输。
客户端请求文件到收到文件的时间:即一个短分组从客服端到服务器再返回客户端所花费的时间称为Round-Trip Time,RTT
TCP的加强版Secure Sockets Layer,SSL是在应用层上实现的,也就是在TCP在将报文推向套接字之前进行加密,接收之后再解密。
HTTP是一个无状态协议statusless protocol,不存储客户端的状态信息,所以后来为了需求产生了cookie这个东西。
cookie存在于:
1、响应报文首部行
2、请求报文首部行
3、用户端系统文件
4、服务器数据库
待续。