一、OSI七层
二、IP地址分类
三、ARP
四、RARP
五、协议
六、TCP和UDP区别
七、TCP三次握手和四次挥手
八、TCP可以两次握手吗
九、TCP如何保证可靠性
十、输入地址后发生了什么
十一、交换机、路由器、网关
一、OSI七层
每一层的协议如下:
应用层:FTP、DNS、Telnet、SMTP、HTTP、WWW、NFS
表示层:JPEG、MPEG、ASII
会话层:NFS、SQL、NETBIOS、RPC
传输层:TCP、UDP、SPX
网络层:IP、ICMP、ARP、RARP、OSPF、IPX、RIP、IGRP、 (路由器)
数据链路:PPP、FR、HDLC、VLAN、MAC (网桥,交换机)
物理层:RJ45、CLOCK、IEEE802.3 (中继器,集线器)
每一层的作用如下:
应用层:允许访问OSI环境的手段(应用协议数据单元APDU)
表示层:对数据进行翻译、加密和压缩(表示协议数据单元PPDU)
会话层:建立、管理和终止会话(会话协议数据单元SPDU)
传输层:提供端到端的可靠报文传递和错误恢复(段Segment)
网络层:负责数据包从源到宿的传递和网际互连(包PackeT)
数据链路层:将比特组装成帧和点到点的传递(帧Frame)
物理层:通过媒介传输比特,确定机械及电气规范(比特Bit)
二、IP地址分类
A类地址:以0开头, 第一个字节范围:1~126(1.0.0.0 - 126.255.255.255);
B类地址:以10开头, 第一个字节范围:128~191(128.0.0.0 - 191.255.255.255);
C类地址:以110开头, 第一个字节范围:192~223(192.0.0.0 - 223.255.255.255);
D类地址:以1110开头,第一个字节范围:224~239(224.0.0.0 - 239.255.255.255);(作为多播使用)
为什么要划分这么多类IP?
掩码是什么?
IP地址与子网掩码相与得到网络号:
ip : 192.168.2.110
Submask : 255.255.255.0
网络号 :192.168.2 .0
三、ARP是地址解析协议,简单语言解释一下工作原理
1:首先,每个主机都会在自己的ARP缓冲区中建立一个ARP列表,以表示IP地址和MAC地址之间的对应关系。
2:当源主机要发送数据时,首先检查ARP列表中是否有对应IP地址的目的主机的MAC地址,如果有,则直接发送数据,如果没有,就向本网段的所有主机发送ARP数据包,该数据包包括的内容有:源主机 IP地址,源主机MAC地址,目的主机的IP 地址。
3:当本网络的所有主机收到该ARP数据包时,首先检查数据包中的IP地址是否是自己的IP地址,如果不是,则忽略该数据包,如果是,则首先从数据包中取出源主机的IP和MAC地址写入到ARP列表中,如果已经存在,则覆盖,然后将自己的MAC地址写入ARP响应包中,告诉源主机自己是它想要找的MAC地址。
4:源主机收到ARP响应包后。将目的主机的IP和MAC地址写入ARP列表,并利用此信息发送数据。如果源主机一直没有收到ARP响应数据包,表示ARP查询失败。
广播发送ARP请求,单播发送ARP响应。
四、描述RARP协议
RARP是逆地址解析协议,作用是完成硬件地址到IP地址的映射,主要用于无盘工作站,因为给无盘工作站配置的IP地址不能保存。工作流程:在网络中配置一台RARP服务器,里面保存着IP地址和MAC地址的映射关系,当无盘工作站启动后,就封装一个RARP数据包,里面有其MAC地址,然后广播到网络上去,当服务器收到请求包后,就查找对应的MAC地址的IP地址装入响应报文中发回给请求者。因为需要广播请求报文,因此RARP只能用于具有广播能力的网络。
五、各种协议的介绍
ICMP协议: 因特网控制报文协议。它是TCP/IP协议族的一个子协议,用于在IP主机、路由器之间传递控制消息。
TFTP协议: 是TCP/IP协议族中的一个用来在客户机与服务器之间进行简单文件传输的协议,提供不复杂、开销不大的文件传输服务。
HTTP协议: 超文本传输协议,是一个属于应用层的面向对象的协议,由于其简捷、快速的方式,适用于分布式超媒体信息系统。
NAT协议:网络地址转换属接入广域网(WAN)技术,是一种将私有(保留)地址转化为合法IP地址的转换技术,
DHCP协议:动态主机配置协议,是一种让系统得以连接到网络上,并获取所需要的配置参数手段,使用UDP协议工作。具体用途:给内部网络或网络服务供应商自动分配IP地址,给用户或者内部网络管理员作为对所有计算机作中央管理的手段。
六.TCP和UDP的区别?
TCP提供面向连接的、可靠的数据流传输,而UDP提供的是非面向连接的、不可靠的数据流传输。
TCP传输单位称为TCP报文段,UDP传输单位称为用户数据报。
TCP注重数据安全性,UDP数据传输快,因为不需要连接等待,少了许多操作,但是其安全性却一般。
TCP对应的协议和UDP对应的协议
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(Trivial File Transfer Protocal),简单文件传输协议,该协议在熟知端口69上使用UDP服务。
七.TCP三次握手和四次挥手的全过程
A 的 TCP 向 B 发出连接请求报文段,其首部中的同步位 SYN = 1,并选择序号 seq = x,表明传送数据时的第一个数据字节的序号是 x。
B 的 TCP 收到连接请求报文段后,如同意,则发回确认。B 在确认报文段中应使 SYN = 1,使 ACK = 1,其确认号ack = x+1,自己选择的序号 seq = y。
A 收到此报文段后向 B 给出确认,其 ACK = 1,确认号 ack = y + 1。A 的 TCP 通知上层应用进程,连接已经建立。
B 的 TCP 收到主机 A 的确认后,也通知其上层应用进程:TCP 连接已经建立。
接收端的ACK总是等于发送端SEQ+1。
TCP的四次挥手
也可以看成两次握手(A的释放和B的释放)
过程:
现在 A 的应用进程先向其 TCP 发出连接释放报文段,并停止再发送数据,主动关闭 TCP 连接。A 把连接释放报文段首部的 FIN = 1,其序号seq = u,等待 B 的确认。
B 发出确认,确认号 ack = u + 1,而这个报文段自己的序号 seq = v。TCP 服务器进程通知高层应用进程。从 A 到 B 这个方向的连接就释放了,TCP 连接,处于半关闭状态。B 若发送数据,A 仍要接收。
若 B 已经没有要向 A 发送的数据,其应用进程就通知 TCP 释放连接。
A 收到连接释放报文段后,必须发出确认。
在确认报文段中 ACK = 1,确认号 ack = w + 1,自己的序号 seq = u + 1。
八.为什么会采用三次握手,若采用二次握手可以吗?为什么采用四次挥手?三次可以吗?TIME_WAIT有什么作用?
为什么采用三次握手而不是两次?
为了防止已失效的连接请求报文段突然又传送到了,因而产生错误。
解释原因:如果在发送过程中的话,假如是两次:当A给B发送一个连接请求,因为网络的原因该请求没有按时到达(实际上只是晚一些到,但超时重传了),A就会重新发送一次请求,这次请求正常到,然后B就会给A一个确认请求,此时就可以传送数据了。但是当A第一次发送的数据又来到了(A以为这个包已经丢失了),那么B就会再次向A发送一个确认,此时的A就不知道这个确认的意义了(不会理会B的再次确认,因为在A看来连接已经建立),而B就会在一直等待着A给他发送信息(等待会导致资源浪费)。
简单的说,两次握手可能导致A多发一次SYN,导致A多接收一次ACK。而如果是三次握手,在第三次A向B发送ACK之后,已经超时失效的旧的SYN(来自第一次握手)就不会导致多余的ACK。
为什么采用四次挥手而不是三次?TIME_WAIT的作用?
在三次握手的过程中,SYN和ACK是一起发送的但是在四次挥手的时候FIN和ACK却不是一起发送的而是分开发送的,为什么呢???
那是因为啊,TCP连接是全双工的也就是说接收到FIN只是说没有数据再发过来但是还是可以发送数据的,也就是接受到一个FIN只是关闭了一个方向的数据传输,另一个方向还可以继续发送数据。在四次挥手的时候也是这样前两次挥手只是确认关闭了一个方向的数据,加上后面两次挥手才真正的关闭了整个全双工连接。
当socket在ESTABISHED状态时,他想主动关闭连接于是向对方发送FIN请求,发送完FIN请求后它处于FIN_WAIT_1状态,当对方确认ACK报文后则处于FIN_WAIT_2状态。FIN_WAIT_2表示半连接,也就是有一方要求关闭连接,另一方收到请求但是告诉她我还有一些数据要发送稍后会关闭。TIME_WAIT状态表示收到对方的FIN并发送出ACK.如果三次挥手可能在关闭后还有一个方向没有关。
1.前俩次挥手:结束一个方向上的链接
2.后俩次挥手:结束另外一个方向上的链接
TIME_WAIT
客户端接收到服务器端的 FIN 报文后进入此状态,此时并不是直接进入 CLOSED 状态,还需要等待一个时间计时器设置的时间 2MSL。这么做有两个理由:
1、确保最后一个确认报文7能够到达。如果 B 没收到 A 发送来的确认报文7,那么就会重新发送连接释放请求报文,A 等待一段时间就是为了处理这种情况的发生。如果没有TIME_WAIT,客户端会重发RST报文段回应服务器,服务器会认为这是一个错误。
2、等待一段时间是为了让本连接持续时间内所产生的所有报文都从网络中消失,使得下一个新的连接不会出现旧的连接请求报文。一个TCP连接处于TIME_WAIT状态时,将无法立即使用该连接占用着的端口来建立一个新连接。如果不存在TIME_WAIT,应用程序能够立即建立一个新的、拥有相同IP地址和端口号的连接(实际上客户端端口号是随机分配的,不太可能和上一次一样),这样可能会接收到上一个连接残留的旧的报文段。
九.TCP是怎么保证可靠性的?
这段内容来自:https://www.cnblogs.com/xiaokang01/p/10033267.html#_label0_4
写的非常详细形象,感谢~
1、校验和
2、确认应答和序列号
3、超时重传
4、连接管理
5、流量控制
6、拥塞控制
1、校验和
发送的数据包的二进制相加然后取反,目的是检测数据在传输过程中的任何变化。如果收到段的检验和有差错,TCP将丢弃这个报文段和不确认收到此报文段。
2、确认应答和序列号
接收方收到报文就会确认(累积确认:对所有按序接收的数据的确认)
TCP给发送的每一个包进行编号,接收方对数据包进行排序,把有序数据传送给应用层。
3、超时重传
当TCP发出一个段后,它启动一个定时器,等待目的端确认收到这个报文段。如果不能及时收到一个确认,将重发这个报文段。
4、连接管理
也就是三次握手和四次挥手。
5、流量控制
TCP连接的每一方都有固定大小的缓冲空间,TCP的接收端只允许发送端发送接收端缓冲区能接纳的数据。当接收方来不及处理发送方的数据,能提示发送方降低发送的速率,防止包丢失。TCP使用的流量控制协议是可变大小的滑动窗口协议。
接收方有即时窗口(滑动窗口),随ACK报文发送
6、拥塞控制
当网络拥塞时,减少数据的发送。
发送方有拥塞窗口,发送数据前比对接收方发过来的即使窗口,取小
慢启动、拥塞避免、拥塞发送、快速恢复
应用数据被分割成TCP认为最适合发送的数据块。
TCP的接收端会丢弃重复的数据。
十.在浏览器中输入www.baidu.com后执行的全部过程
1、找到域名对应的IP
依次查找浏览器缓存、本机hosts,如果都没有找到IP,会询问DNS根服务器(即运营商,比如中国电信、中国移动等),DNS根服务器并不存储域名-IP映射,而是告诉本机:.com域服务器在这,你去问问它。本地DNS服务器继续向.com域服务器发出请求,.com域服务器收到请求之后,也不会直接返回域名和IP地址的映射,而是告诉本地DNS服务器,该域名的解析服务器的地址在这:也就是www.baidu.com的解析服务器地址。
最后,该解析服务器总算返回给了我们IP。
2、建立TCP连接
在拿到域名对应的IP地址后,会以随机端口(1024~~65535)向WEB服务器程序80端口(http是80,https是443)发起TCP的连接请求,这个连接请求进入到内核的TCP/IP协议栈(用于识别该连接请求,解封包,一层一层的剥开),还有可能要经过Netfilter防火墙(属于内核的模块)的过滤,最终到达WEB程序,最终建立了TCP/IP的连接,对于客户端与服务器的TCP链接,必然要说的就是『三次握手』。
3、发起请求、解析请求
一个完整的HTTP请求过程可以参考以下:
https://blog.csdn.net/ailunlee/article/details/90600174
1
4、服务器处理与转发到浏览器
服务器端收到请求后的由web服务器(准确说应该是http服务器)处理请求,诸如Apache、Ngnix、IIS等。web服务器解析用户请求,知道了需要调度哪些资源文件,再通过相应的这些资源文件处理用户请求和参数,并调用数据库信息,将结果通过web服务器返回给浏览器客户端。
5、关闭连接与页面渲染
为了避免服务器与客户端双方的资源占用和损耗,当双方没有请求或响应传递时,任意一方都可以发起关闭请求。与创建TCP连接的3次握手类似,关闭TCP连接,需要4次握手。
将HTML代码和静态资源渲染后呈现给用户。
十一.了解交换机、路由器、网关的概念,并知道各自的用途
1)交换机
在计算机网络系统中,交换机是针对共享工作模式的弱点而推出的。交换机拥有一条高带宽的背部总线和内部交换矩阵。交换机的所有的端口都挂接在这条背 部总线上,当控制电路收到数据包以后,处理端口会查找内存中的地址对照表以确定目的MAC(网卡的硬件地址)的NIC(网卡)挂接在哪个端口上,通过内部 交换矩阵迅速将数据包传送到目的端口。目的MAC若不存在,交换机才广播到所有的端口,接收端口回应后交换机会“学习”新的地址,并把它添加入内部地址表 中。
交换机工作于OSI参考模型的第二层,即数据链路层。交换机内部的CPU会在每个端口成功连接时,通过ARP协议学习它的MAC地址,保存成一张 ARP表。在今后的通讯中,发往该MAC地址的数据包将仅送往其对应的端口,而不是所有的端口。因此,交换机可用于划分数据链路层广播,即冲突域;但它不 能划分网络层广播,即广播域。
交换机被广泛应用于二层网络交换,俗称“二层交换机”。
交换机的种类有:二层交换机、三层交换机、四层交换机、七层交换机分别工作在OSI七层模型中的第二层、第三层、第四层盒第七层,并因此而得名。
2)路由器
路由器(Router)是一种计算机网络设备,提供了路由与转送两种重要机制,可以决定数据包从来源端到目的端所经过 的路由路径(host到host之间的传输路径),这个过程称为路由;将路由器输入端的数据包移送至适当的路由器输出端(在路由器内部进行),这称为转送。路由工作在OSI模型的第三层——即网络层,例如网际协议。
路由器的一个作用是连通不同的网络,另一个作用是选择信息传送的线路。 路由器与交换器的差别,路由器是属于OSI第三层的产品,交换器是OSI第二层的产品(这里特指二层交换机)。
3)网关
网关(Gateway),网关顾名思义就是连接两个网络的设备,区别于路由器(由于历史的原因,许多有关TCP/IP 的文献曾经把网络层使用的路由器(Router)称为网关,在今天很多局域网采用都是路由来接入网络,因此现在通常指的网关就是路由器的IP),经常在家 庭中或者小型企业网络中使用,用于连接局域网和Internet。 网关也经常指把一种协议转成另一种协议的设备,比如语音网关。
在传统TCP/IP术语中,网络设备只分成两种,一种为网关(gateway),另一种为主机(host)。网关能在网络间转递数据包,但主机不能 转送数据包。在主机(又称终端系统,end system)中,数据包需经过TCP/IP四层协议处理,但是在网关(又称中介系 统,intermediate system)只需要到达网际层(Internet layer),决定路径之后就可以转送。在当时,网关 (gateway)与路由器(router)还没有区别。
在现代网络术语中,网关(gateway)与路由器(router)的定义不同。网关(gateway)能在不同协议间移动数据,而路由器(router)是在不同网络间移动数据,相当于传统所说的IP网关(IP gateway)。
网关是连接两个网络的设备,对于语音网关来说,他可以连接PSTN网络和以太网,这就相当于VOIP,把不同电话中的模拟信号通过网关而转换成数字信号,而且加入协议再去传输。在到了接收端的时候再通过网关还原成模拟的电话信号,最后才能在电话机上听到。
对于以太网中的网关只能转发三层以上数据包,这一点和路由是一样的。而不同的是网关中并没有路由表,他只能按照预先设定的不同网段来进行转发。网关最重要的一点就是端口映射,子网内用户在外网看来只是外网的IP地址对应着不同的端口,这样看来就会保护子网内的用户。