1.OSI七层模型以及TCP/IP四层模型
层次名称 | 功 能 | 协 议 |
网络接口 (Host-to-Net Layer) | 负责实际数据的传输,对应OSI参考模型的下两层 | HDLC(高级链路控制协议) PPP(点对点协议) SLIP(串行线路接口协议) |
网际层 (Inter-network Layer) | 负责网络间的寻址 数据传输,对应OSI参考模型的第三层 | IP(网际协议) ICMP(网际控制消息协议) ARP(地址解析协议) RARP(反向地址解析协议) |
传输层 (Transport Layer) | 负责提供可靠的传输服务,对应OSI参考模型的第四层 | TCP(控制传输协议) UDP(用户数据报协议) |
应用层 (Application Layer) | 负责实现一切与应用程序相关的功能,对应OSI参考模型的上三层 | FTP(文件传输协议) HTTP(超文本传输协议) DNS(域名服务器协议) SMTP(简单邮件传输协议) NFS(网络文件系统 |
http是超文本传输协议,信息是明文传输,https 则是具有安全性的ssl加密传输协议
3.HTTP请求报文
一个HTTP请求报文由请求行(request line)、请求头部(header)、空行和请求数据
3.HTTP协议的请求方法有GET、POST
GET 方法提交数据不安全,数据置于请求行,客户端地址栏可见;
GET 方法提交的数据大小限制在255 个字符之内
POST 方法提交数据安全,数据置于消息主体内,客户端不可见
POST 方法提交的数据大小没有限制
4.表单提交中get和post方式的区别
get安全性非常低,post安全性较高。
.get传送的数据量较小,不能大于2KB。post传送的数据量较大
对于get方式,服务器端用Request.QueryString获取变量的值,对于post方式,服务器端用Request.Form获取提交的数据
.get是从服务器上获取数据,post是向服务器传送数据。
5.TCP的三次握手和四次挥手
中断连接端可以是Client端,也可以是Server端。
为什么连接的时候是三次握手,关闭的时候却是四次握手?
答:因为当Server端收到Client端的SYN连接请求报文后,可以直接发送SYN+ACK报文。其中ACK报文是用来应答的,SYN报文是用来同步的。但是关闭连接时,当Server端收到FIN报文时,很可能并不会立即关闭SOCKET,所以只能先回复一个ACK报文,告诉Client端,"你发的FIN报文我收到了"。只有等到我Server端所有的报文都发送完了,我才能发送FIN报文,因此不能一起发送。故需要四步握手。
3次握手”的目的是“为了防止已失效的连接请求报文段突然又传送到了服务端,因而产生错误
6.session和cookie的区别
cookie数据存放在客户的浏览器上,session数据放在服务器上。
考虑到安全应当使用session
考虑到减轻服务器性能方面,应当使用COOKIE。
cookie机制采用的是在客户端保持状态的方案,而session机制采用的是在服务器端保持状态的方案
ession机制是一种服务器端的机制,服务器使用一种类似于散列表的结构(也可能就是使用散列表)来保存信息
当你在浏览网站的时候,WEB 服务器会先送一小小资料放在你的计算机上,Cookie 会帮你在网站上所打的文字或是一些选择,
都纪录下来。当下次你再光临同一个网站,WEB 服务器会先看看有没有它上次留下的 Cookie 资料,有的话,就会依据 Cookie
里的内容来判断使用者,送出特定的网页内容给你。
当程序需要为某个客户端的请求创建一个session时,服务器首先检查这个客户端的请求里是否已包含了一个session标识
(称为session id),如果已包含则说明以前已经为此客户端创建过session,服务器就按照session id把这个session检索出来
使用(检索不到,会新建一个),如果客户端请求不包含session id,则为此客户端创建一个session并且生成一个与此session相
关联的session id
这个session id将被在本次响应
中返回给客户端保存
保存这个session id的方式可以采用cookie常被使用的一种技术叫做URL重写,就是把session id直接附加在URL路径的后面。还有一种技术叫做表单隐藏字段。就是服务器
会自动修改表单,添加一个隐藏字段,以便在表单提交时能够把session id传递回服务器
7.redirect与forward区别
Redirect | URL重新定向:可以是任意的URL | 不能共享request里面的数据 | 一般用于用户注销登录时返回主页面和跳转到其它的网站等等 |
Forward | 页面的转发:只能是同一个Web应用程序的其他Web组件 | 转发页面和转发到的页面可以共性request里面的数据 | 一般用于用户登录的时候根据角色转发到相应的模块等等 |
8.小结TCP与UDP的区别:
1.基于连接与无连接;
2.对系统资源的要求(TCP较多,UDP少);
3.UDP程序结构较简单;
4.流模式与数据报模式 ;
5.TCP保证数据正确性,UDP可能丢包,TCP保证数据顺序,UDP不保证。
9.
应用层(Application layer) 提供应用程序间通信 FTP telnet
表示层(Presentation layer) 处理数据格式,数据加密等. 加密
会话层(Session layer) 建立,维护和管理会话 SQL
传输层(Transport layer) 建立主机端到端连接TCP UDP
网络层(Network layer) 寻址和路由选择 IP IPX
数据链路层(Data link layer) 提供介质访问,链路管理等 ATM
物理层(Physical layer) 比特流传输 RJ45 802.3
ISO/OSI 只是个参考模型在实际应用中大家都使用TCP/IP
TCP/IP | OSI |
---|---|
应用层 | 应用层 表示层 会话层 |
主机到主机层(TCP)(又称传输层) | 传输层 |
网络层(IP)(又称互联层) | 网络层 |
网络接口层(又称链路层) | 数据链路层 |
物理层 |
网络层包括:IP(Internet Protocol)协议、ICMP(Internet Control Message Protocol)
控制报文协议、ARP(Address Resolution Protocol)地址转换协议、RARP(Reverse ARP)反向地址转换协议。
IP是网络层的核心,通过路由选择将下一条IP封装后交给接口层。IP数据报是无连接服务。
ICMP是网络层的补充,可以回送报文。用来检测网络是否通畅。
Ping命令就是发送ICMP的echo包,通过回送的echo relay进行网络测试。
ARP是正向地址解析协议,通过已知的IP,寻找对应主机的MAC地址。
RARP是反向地址解析协议,通过MAC地址确定IP地址。
1.集线器:物理层设备,用于信号的放大和连接多个终端。2.交换机:数据链路层设备,有多个冲突域和广播域,有多个端口以用于连接各个主机,使用物理地址(MAC地址),转发数据较快。
3.路由器:网络层设备,阻止广播,安全性高,使用逻辑地址(IP地址),转发数据较慢。
10.
滑动窗口协议
1.概念
滑动窗口协议,也称为回退N步协议(Go-Back-N,GBN)中,允许发送方发送多个分组(当有多个分组可用时)而不需等待确认,但它受限于在流水线 中为未确认的分组数不能超过某个最大允许数N。滑动窗口协议是TCP使用的一种流量控制方法,此协议能够加速数据的传输。
只有在接收窗口向前滑动时(与此同时也发送了确认),发送窗口才有可能向前滑动。
收发两端的窗口按照以上规律不断地向前滑动,因此这种协议又称为滑动窗口协议。
当发送窗口和接收窗口的大小都等于1时,就是停止等待协议。
当发送窗口大于1,接收窗口等于1时,就是回退N步协议。
当发送窗口和接收窗口的大小均大于1时,就是选择重发协议。
协议中规定,对于窗口内未经确认的分组需要重传。这种分组的数量最多可以等于发送窗口的大小,即滑动窗口的大小n减去1(因为发送窗口不可能大于(n-1),起码接收窗口要大于等于1)。
2.工作原理
TCP滑动窗口用来暂存两台计算机间要传送的数据分组。每台运行TCP协议的计算机有两个滑动窗口:一个用于数据发送,另一个用于数据接收。发送端待发数 据分组在缓冲区排队等待送出。被滑动窗口框入的分组,是可以在未收到接收确认的情况下最多送出的部分。滑动窗口左端标志X的分组,是已经被接收端确认收到 的分组。随着新的确认到来,窗口不断向右滑动。
TCP 协议软件依靠滑动窗口机制解决传输效率和流量控制问题。它可以在收到确认信息之前发送多个数据分组。这种机制使得网络通信处于忙碌状态,提高了整个网络的 吞吐率,它还解决了端到端的通信流量控制问题,允许接收端在拥有容纳足够数据的缓冲之前对传输进行限制。在实际运行中,TCP滑动窗口的大小是可以随时调 整的。收发端TCP协议软件在进行分组确认通信时,还交换滑动窗口控制信息,使得双方滑动窗口大小可以根据需要动态变化,达到在提高数据传输效率的同时, 防止拥塞的发生。
称窗口左边沿向右边沿靠近为窗口合拢,这种现象发生在数据被发送和确认时。当窗口右边沿向右移动时将允许发送更多的数据,称之为窗口张开。这种现象发生在另一端的接收进程读取已经确认的数据并释放了TCP的接收缓存时。
当右边沿向左移动时,称为窗口收缩。Host Requirements RFC强烈建议不要使用这种方式。但TCP必须能够在某一端产生这种情况时进行处理。 如果左边沿到达右边沿,则称其为一个零窗口。
3. 慢启动算法
每个发送方位维护两个窗口:一个是接收方准许的窗口,第二个是拥塞窗口。最终允许发送的字节数以接受窗口和用死啊窗口的最小值为准。因此有效窗口是发送方认为没有问题的窗口和接收方认为没有问题的窗口中最小的那个。
事实上拥塞控制中还定义有第三个参数:阈值,初始值为64KB。
慢启动过程:
(1)当一个链接建立起来以后,发送方的拥塞窗口初始化为该链接上当前使用的最大数据段值。然后发送一个最大数据段,如果该数据段在定时器过期之前确认,那么拥塞窗口变成2。以后拥塞窗口按指数级别增长。
(2)当拥塞窗口增长到阈值的时候,指数增长停滞,从这个点开始,每次成功的传输,都会使拥塞窗口线程增长,(即每次只增长一个最大数据段)。
(3)当超时发生时,阈值被设置为当前拥塞窗口的一半 ,而拥塞窗口被充值为一个最大数据段,之后使用相同的慢启动算法来决定网络的处理能力。
4.名词解释
(1)停止等待协议
(2)回退N步协议
(3)选择重传
GBN协议(Go-Back-N,GBN)允许发送方用多个分组“填充流水线”,因此避免了停止等待协议中所提到的信道利用率的问题。然而,GBN协议也存在性能上的问题。尤其是当窗口的长度和带宽时延积都很大,在流水线中会有很多分组时更是如此。一个单个分 组的差错就引起GBN重传大量分组,而其中的许多分组根本没有必要重传。随着信道差错率的增加,流水线可能会被这些没有必要重传的分组填满。
选择重传(SR)协议通过让发送方近重传那些换衣在接受方出错(即分组丢失或受损)的分组,从而避免了不必要的重传。这种个别的、按需的重传要求接受方逐个地确认正确接受的分组。再次用窗口长度N来限制流水线中为完成、未被确认的分组数。然而,与GBN不同的是,发送方已经接收到了对窗口中某些分组的ACK。