OSI,TCP/IP四层,五层协议的体系结构,以及各层协议
五层协议与四层相比多了物理层。
应用层:FTP-文件传送协议/Telenet-远程登录协议/DNS-域名解析协议/SMTP-邮件传送协议/POP3-邮局协议/HTTP-协议
tcp,udp区别?http与tcp相比而言,为什么在某些情况下需要使用http,有的情况下需要使用tcp?
TCP提供面向连接的、可靠的数据流传输,而UDP提供的是非面向连接的、不可靠的数据流传输。TCP传输单位称为TCP报文段,UDP传输单位称为用户数据报。
TCP注重数据安全性,UDP数据传输快,因为不需要连接等待,少了许多操作,但是其安全性却一般。
OSI | TCP/IP | 对应协议 |
1物理层 | 网络接口层 比特 | IEEE802.1A IEEE802.2-IEEE802.11 |
2数据链路层 | FDDI/Ethernet Arpant/PDN/SLP/PPP | |
3网络层 | 网际层 数据帧 | IP/ICMP/ARP/RARP AKP/UUCP |
4传输层 | 运输层 数据包 | TCP/UDP |
5会话层 | 应用层 数据段 | 没有协议 |
6表示层 | 没有协议 | |
7应用层 | DNS/HTTP/FTP TFTP/DHCP/POP3 SMTP/Telnet/SNMP |
- 物理层:网卡、集线器等物理媒体不可靠
- 数据链路层:MAC,交换机:物理地址寻址、数据的成帧、流量控制、数据的检错、重发,可靠传输
- 网络层:IP,路由器:子网间的数据包进行路由选择,拥塞控制、网际互连
- 传输层:第一个端到端的层次,差错控制和流量控制
- 会话层:多路复用ip:建立、管理、终止进程之间的会话
- 表示层:对上层数据进行变换以保证一个主机应用层信息被另一个主机的应用程序理解。数据的加密、压缩、格式转换。
- 应用层:为操作系统或网络应用程序提供访问网络服务的接
GET | 请求读取由URL所标志的信息。数据量比较小,明文,放在URI里。 |
POST | 给服务器添加信息(如注释)。传输实体的主体,数据量没有限制大小,比较安全,放在实体里的request包里。 |
PUT | 在给定的URL下存储一个文档 |
DELETE | 删除给定的URL所标志的资源 |
HEAD | 获得报文的首部。 |
TRACE | 追踪路径,让web服务器端将之前的请求通信环回给客户端。 |
CONNECT | 要求用隧道协议连接代理,在与服务器通信时简历隧道,实现用隧道协议进行TCP通信:SSL和TLS. |
GET | POST |
从服务器上获取数据 | 向服务器传送数据 |
传送的数据量小,不能大于2KB | 传送的数据量较大,一般被默认为不受限制 |
把参数数据队列加到提交表单的Action属性所指向的URL中 值和表单内各个字段一一对应,在URL中看到 | 在实体里比较安全 |
HTTP是什么?
HTTP是hypertext transfer protocol(超文本传输协议)的简写,它是TCP/IP协议的一个应用层协议,用于定义WEB浏览器与WEB服务器之间交换数据的过程。客户端连上web服务器后,若想获得web服务器中的某个web资源,需遵守一定的通讯格式,HTTP协议用于定义客户端与web服务器通迅的格式。
HTTP和HTTPS区别,ssl是怎么加密的?
http+加密(ssl)+认证+完整性保护(MD5/SHA)=HTTPS(HTTP的通信接口部分用SSL和TLS协议代替)
https比http慢了2——100倍,可以使用SSL加速器或者部分使用http。慢--通信慢,https大量消耗CPU和内存使处理速度慢。
安全性,https中ssl(安全套接层),两把非对称的密钥,用公开密钥加密,然后私钥解密。解密:对离散对数求值。
1、https协议需要到ca申请证书,一般免费证书较少,因而需要一定费用。
2、http是超文本传输协议,信息是明文传输,https则是具有安全性的ssl加密传输协议。
3、http和https使用的是完全不同的连接方式,用的端口也不一样,前者是80,后者是443。
4、http的连接简单,无状态的;HTTPS协议由SSL+HTTP协议构建可进行加密传输、身份认证的网络协议,比http协议安全。
DNS的作用NAT协议、DHCP协议、DNS协议的作用
DNS,域名系统,解析域名和ip地址的关系。解析的过程大致如下:假设你输入mail.163.com。
2.主机向本地域名服务器(这里就是地址里的DNS了)进行查询,如果该服务器有mail.163.com的IP信息,则6;否则3。
3.该DNS服务器向根域名服务器发起查询。根域名服务器告诉本地域名服务器下一次应查询dns.com的顶级域名服务器;
4.本地域名服务器向dns.com顶级域名服务器进行查询,如果该服务器有mail.163.com的IP信息,则6,;否则5。
5.dns.com顶级域名服务器向本地域名服务器指出下一次向dns.163.com发起查询。本地域名服务器向dns.163.com发起查询,网易公司的DNS服务器就会有他的163mail服务器的IP信息,然后发给本地域名服务器。
6.本地域名服务器收到解析的内容,发回给主机。
7.主机获得IP信息。
在客户端输入URL到页面返回,发生了什么
https://blog.csdn.net/sinat_21026543/article/details/79811158
cookie和session的区别?
https://blog.csdn.net/sinat_21026543/article/details/79811173
TCP对应的协议:
(1) FTP:定义了文件传输协议,使用21端口。
(2) Telnet:一种用于远程登陆的端口,使用23端口,用户可以以自己的身份远程连接到计算机上,可提供基于DOS模式下的通信服务。
(3) SMTP:邮件传送协议,用于发送邮件。服务器开放的是25号端口。
(4) POP3:它是和SMTP对应,POP3用于接收邮件。POP3协议所用的是110端口。
(5)HTTP:是从Web服务器传输超文本到本地浏览器的传送协议。
UDP对应的协议:
(1) DNS:用于域名解析服务,将域名地址转换为IP地址。DNS用的是53号端口。
(2) SNMP:简单网络管理协议,使用161号端口,是用来管理网络设备的。因网络设备很多,无连接的服务体现出其优势。
(3) TFTP(Trival File Tran敏感词er Protocal),简单文件传输协议,该协议在熟知端口69上使用UDP服务。
头条刷新首页的协议(tcp)
视频的协议(udp)
在udp基础上如何实现tcp
http协议(http底层协议是tcp),作用,http有什么需要改进的吗?
正向代理和反向代理?
// 将中间主机可访问的主机的指定端口 镜像到本地指定端口
ssh -L 本地IP:本地端口:中间主机可访问的IP:中间主机可访问的IP的端口 root@中间主机
// 将本地可访问的主机的指定端口 镜像到远程指定端口
ssh -R 远程IP:远程端口:本地可访问IP:本地可访问IP的端口 root@远程主机
DNS的作用NAT协议、DHCP协议、DNS协议的作用
NAT协议:网络地址转换(NAT,Network AddressTranslation)属接入广域网(WAN)技术,是一种将私有(保留)地址转化为合法IP地址的转换技术,它被广泛应用于各种类型Internet接入方式和各种类型的网络中。原因很简单,NAT不仅完美地解决了lP地址不足的问题,而且还能够有效地避免来自网络外部的攻击,隐藏并保护网络内部的计算机。
DHCP协议:动态主机设置协议(Dynamic Host ConfigurationProtocol, DHCP)是一个局域网的网络协议,使用UDP协议工作,主要有两个用途:给内部网络或网络服务供应商自动分配IP地址,给用户或者内部网络管理员作为对所有计算机作中央管理的手段。
TCP三次握手和四次挥手的全过程
三次握手
第一次握手:客户端发送syn包(syn=x)到服务器,并进入SYN_SEND状态,等待服务器确认;
第二次握手:服务器收到syn包,必须确认客户的SYN(ack=x+1),同时自己也发送一个SYN包(syn=y),即SYN+ACK包,此时服务器进入SYN_RECV状态;
第三次握手:客户端收到服务器的SYN+ACK包,向服务器发送确认包ACK(ack=y+1),此包发送完毕,客户端和服务器进入ESTABLISHED状态,完成三次握手。
握手过程中传送的包里不包含数据,三次握手完毕后,客户端与服务器才正式开始传送数据。理想状态下,TCP连接一旦建立,在通信双方中的任何一方主动关闭连接之前,TCP 连接都将被一直保持下去。
四次握手
与建立连接的“三次握手”类似,断开一个TCP连接则需要“四次握手”。
第一次挥手:主动关闭方发送一个FIN,用来关闭主动方到被动关闭方的数据传送,也就是主动关闭方告诉被动关闭方:我已经不 会再给你发数据了(当然,在fin包之前发送出去的数据,如果没有收到对应的ack确认报文,主动关闭方依然会重发这些数据),但是,此时主动关闭方还可 以接受数据。
第二次挥手:被动关闭方收到FIN包后,发送一个ACK给对方,确认序号为收到序号+1(与SYN相同,一个FIN占一个序号)。
第三次挥手:被动关闭方发送一个FIN,用来关闭被动关闭方到主动关闭方的数据传送,也就是告诉主动关闭方,我的数据也发送完了,不会再给你发数据了。
第四次挥手:主动关闭方收到FIN后,发送一个ACK给被动关闭方,确认序号为收到序号+1,至此,完成四次挥手。
TCP的可靠性如何保证:
在TCP的连接中,数据流必须以正确的顺序送达对方。TCP的可靠性是通过顺序编号和确认(ACK)来实现的。TCP在开始传送一个段时,为准备重传而首先将该段插入到发送队列之中,同时启动时钟。其后,如果收到了接受端对该段的ACK信息,就将该段从队列中删去。如果在时钟规定的时间内,ACK未返回,那么就从发送队列中再次送出这个段。TCP在协议中就对数据可靠传输做了保障,握手与断开都需要通讯双方确认,数据传输也需要双方确认成功,在协议中还规定了:分包、重组、重传等规则;而UDP主要是面向不可靠连接的,不能保证数据正确到达目的地。
TCP的三次握手过程?为什么会采用三次握手,若采用二次握手可以吗?
答:建立连接的过程是利用客户服务器模式,假设主机A为客户端,主机B为服务器端。
(1)TCP的三次握手过程:主机A向B发送连接请求;主机B对收到的主机A的报文段进行确认;主机A再次对主机B的确认进行确认。
(2)采用三次握手是为了防止失效的连接请求报文段突然又传送到主机B,因而产生错误。失效的连接请求报文段是指:主机A发出的连接请求没有收到主机B的确认,于是经过一段时间后,主机A又重新向主机B发送连接请求,且建立成功,顺序完成数据传输。考虑这样一种特殊情况,主机A第一次发送的连接请求并没有丢失,而是因为网络节点导致延迟达到主机B,主机B以为是主机A又发起的新连接,于是主机B同意连接,并向主机A发回确认,但是此时主机A根本不会理会,主机B就一直在等待主机A发送数据,导致主机B的资源浪费。
(3)采用两次握手不行,原因就是上面说的实效的连接请求的特殊情况。
【问题1】为什么连接的时候是三次握手,关闭的时候却是四次握手?
答:因为当Server端收到Client端的SYN连接请求报文后,可以直接发送SYN+ACK报文。其中ACK报文是用来应答的,SYN报文是用来同步的。但是关闭连接时,当Server端收到FIN报文时,很可能并不会立即关闭SOCKET,所以只能先回复一个ACK报文,告诉Client端,"你发的FIN报文我收到了"。只有等到我Server端所有的报文都发送完了,我才能发送FIN报文,因此不能一起发送。故需要四步握手。
【问题2】为什么TIME_WAIT状态需要经过2MSL(最大报文段生存时间)才能返回到CLOSE状态?
答:虽然按道理,四个报文都发送完毕,我们可以直接进入CLOSE状态了,但是我们必须假象网络是不可靠的,有可以最后一个ACK丢失。所以TIME_WAIT状态就是用来重发可能丢失的ACK报文。
TCP 的滑动窗口,流量控制和拥塞控制,快重传和快恢复,超时重传
TCP 协议作为一个可靠的面向流的传输协议,其可靠性和流量控制由滑动窗口协议保证,而拥塞控制则由控制窗口结合一系列的控制算法实现。
滑动窗口协议: 1. “窗口”对应的是一段可以被发送者发送的字节序列,其连续的范围称之为“窗口”; 2. “滑动”则是指这段“允许发送的范围”是可以随着发送的过程而变化的,方式就是按顺序“滑动”。
流量控制:主要是接收方传递信息给发送方,使其不要发送数据太快,是一种端到端的控制。主要的方式就是返回的 ACK 中会包含自己的接收窗口的大小,并且利用大小来控制发送方的数据发送。
拥塞控制:防止过多的数据注入到网络中,这样可以使网络中的路由器或链路不致过载。常用的方法就是:( 1 )慢开始、拥塞控制( 2 )快重传、快恢复。
数据在传输时不仅一个窗口协议,还有一个拥塞窗口来控制数据的流量,使得数据不会一下子都跑到网路中引起“拥塞”。拥塞窗口最初使用指数增长的速度来增加自身的窗口,直到发生超时重传,再利用拥塞避免算法和慢启动门限进行一次微调。
拥塞避免算法就是:每经过一个往返时间 RTT 就把发送方的拥塞窗口 +1 ,即让拥塞窗口缓慢地增大,按照线性规律增长;当出现网络拥塞,比如丢包时,将慢开始门限设为原先的一半,然后将 cwnd 设为 1 ,执行慢启动算法(较低的起点,指数级增长);
慢启动门限就是说,当拥塞窗口超过门限时,就使用拥塞避免算法,而在门限以内就采用慢启动算法。通常拥塞窗口记做 cwnd ,慢启动门限记做 ssthresh 。
慢开始和拥塞控制算法常常作为一个整体使用,而快重传和快恢复则是为了减少因为拥塞导致的数据包丢失带来的重传时间,从而避免传递无用的数据到网络。
快重传的机制是:
1. 接收方如果发现一个包丢失,则对后续的包继续发送针对该包的重传请求;
2. 一旦发送方接收到三个一样的确认,就知道该包之后出现了错误,立刻重传该包;
3. 此时发送方开始执行“快恢复”算法:
*1. 慢开始门限减半;
*2. cwnd 设为慢开始门限减半后的数值;
*3. 执行拥塞避免算法(高起点,线性增长);
超时重传是 TCP 协议保证数据可靠性的另一个重要机制,其原理是在发送某一个数据以后就开启一个计时器,在一定时间内如果没有得到发送的数据报的 ACK 报文,那么就重新发送数据,直到发送成功为止。