Ref:https://www.nowcoder.com/questionTerminal/6032e54a13b54a81ae2697d2a8477244
来源:牛客网
OSI,TCP/IP,五层协议的体系结构,以及各层协议
OSI分层 (7层):物理层、数据链路层、网络层、传输层、会话层、表示层、应用层。
TCP/IP分层(4层):网络接口层、 网际层、运输层、 应用层。
五层协议 (5层):物理层、数据链路层、网络层、运输层、 应用层。
每一层的协议如下:
物理层:RJ45、CLOCK、IEEE802.3 (中继器,集线器,网关)
数据链路:PPP、FR、HDLC、VLAN、MAC (网桥,交换机)
网络层:IP、ICMP、ARP、RARP、OSPF、IPX、RIP、IGRP、 (路由器)
传输层:TCP、UDP、SPX
会话层:NFS、SQL、NETBIOS、RPC
表示层:JPEG、MPEG、ASII
应用层:FTP、DNS、Telnet、SMTP、HTTP、WWW、NFS
每一层的作用如下:
物理层:通过媒介传输比特,确定机械及电气规范(比特Bit)
数据链路层:将比特组装成帧和点到点的传递(帧Frame)
网络层:负责数据包从源到宿的传递和网际互连(包PackeT)
传输层:提供端到端的可靠报文传递和错误恢复(段Segment)
会话层:建立、管理和终止会话(会话协议数据单元SPDU)
表示层:对数据进行翻译、加密和压缩(表示协议数据单元PPDU)
应用层:允许访问OSI环境的手段(应用协议数据单元APDU)
总结一下,网络协议这么多,需要怎样进行记忆呢?
自下往上记忆,
物理层是基于通信的协议,所以最底层(网线的科技)
数据链路层是对网线连接到家里的电脑时,可能会从大公司ISP到小公司ISP,毕竟一根网线不可能长到直连到你互联网访问的任何地方。所以需要中继和交换,MAC协议是常见的物理地址协议,得记住,物理的抽象地址,物理层上面一层
网络层 准备要两台终端互相发消息啦,拆分大数据打成小包的形式ARP和OSPF很重要,MAC地址还不够人性化,要准备进一步抽象成IP地址啦,ARP相当于翻译工具,把IP翻译成MAC地址
传输层 发之前,我们得定义个交通规则,要不然容易出事故,红灯停,绿灯行,小包套接上传输层标识后,成为段,遵守TCP(一条大马路,限速70,我就跑50,保证不出事) 或者UDP(单方向车全堵住啦,交警来人工控制红绿灯,1分钟绿灯,踩着油门跑啊,就怕有些司机太兴奋,踩了脚油门撞了,交警说,你们路边上协商着,然后就走了)
会话层 个人用的不多,代表性的是RPC(RMI)也可以算作是应用层的协议啦。类似JAVA WEB中的Session。比如访问淘宝网,昨天已经登录了,今天就不需要再次登录用户(假想)。远程方法调用,通过服务端注册服务,然后让客户端调用远程方法,通过stub调用远程对象,进而操控服务器上的对象和方法,返回的是一个远程对象的copy,而不是对象本身。
【RPC流程】领导让小张去信访局处理个事情,小张直接打电话给老盆友小李,把事情的微信扫描发给他,他做好之后盖了章,回复小张事情办妥了,并且用微信拍了照给小张(不是盖章的原件,这是和Web Service最大的区别)
表示层就和应用层一起介绍吧,其实就像MVC中的V,数据接收到了,可以给应用层的应用使用数据了,跑各种高层次的应用,例如SMTP,就是邮件传输协议,基于TCP。
IP地址的分类问题
- A类地址:以0开头, 第一个字节范围:1~127(1.0.0.0 - 127.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);(作为多播使用)
- E类地址:保留
其中A、B、C是基本类,D、E类作为多播和保留使用。
以下是留用的内部私有地址:
A类 10.0.0.0–10.255.255.255
B类 172.16.0.0–172.31.255.255
C类 192.168.0.0–192.168.255.255
IP地址与子网掩码相与得到网络号:
ip : 192.168.2.110
Submask : 255.255.255.0
网络号 :192.168.2 .0
注:
主机号,全为0的是网络号(例如:192.168.2.0),主机号全为1的为广播地址(255.255.255.255)
ARP是地址解析协议,简单语言解释一下工作原理。
- 首先,每个主机都会在自己的ARP缓冲区中建立一个ARP列表,以表示IP地址和MAC地址之间的对应关系。
- 当源主机要发送数据时,首先检查ARP列表中是否有对应IP地址的目的主机的MAC地址,如果有,则直接发送数据,如果没有,就向本网段的所有主机发送ARP数据包,该数据包包括的内容有:源主机 IP地址,源主机MAC地址,目的主机的IP 地址。
- 当本网络的所有主机收到该ARP数据包时,首先检查数据包中的IP地址是否是自己的IP地址,如果不是,则忽略该数据包,如果是,则首先从数据包中取出源主机的IP和MAC地址写入到ARP列表中,如果已经存在,则覆盖,然后将自己的MAC地址写入ARP响应包中,告诉源主机自己是它想要找的MAC地址。
- 源主机收到ARP响应包后。将目的主机的IP和MAC地址写入ARP列表,并利用此信息发送数据。如果源主机一直没有收到ARP响应数据包,表示ARP查询失败。
广播发送ARP请求,单播发送ARP响应。
各种协议的介绍
- ICMP协议: 因特网控制报文协议。它是TCP/IP协议族的一个子协议,用于在IP主机、路由器之间传递控制消息。
- TFTP协议: 是TCP/IP协议族中的一个用来在客户机与服务器之间进行简单文件传输的协议,提供不复杂、开销不大的文件传输服务。
- HTTP协议: 超文本传输协议,是一个属于应用层的面向对象的协议,由于其简捷、快速的方式,适用于分布式超媒体信息系统。
- NAT协议:网络地址转换属接入广域网(WAN)技术,是一种将私有(保留)地址转化为合法IP地址的转换技术,
描述RARP协议
RARP是逆地址解析协议,作用是完成硬件地址到IP地址的映射,主要用于无盘工作站,因为给无盘工作站配置的IP地址不能保存。工作流程:在网络中配置一台RARP服务器,里面保存着IP地址和MAC地址的映射关系,当无盘工作站启动后,就封装一个RARP数据包,里面有其MAC地址,然后广播到网络上去,当服务器收到请求包后,就查找对应的MAC地址的IP地址装入响应报文中发回给请求者。因为需要广播请求报文,因此RARP只能用于具有广播能力的网络。
一句话,反向的ARP,,注意的点是必须要有广播能力
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,至此,完成四次挥手。
在浏览器中输入www.baidu.com后执行的全部过程
网络的平行结构和竖形结构。