深入浅出RPC服务 | 不同层的网络协议( 二 )


其它协议
FTP·、Gopher IMAP4 、 IRC 、 NNTP 、XMPP 、POP3 、SIP 、SMTP 、SNMP 、SSH 、TE.NET 、RTCP 、RTP 、RTSP 、 SDP 、 SOAP 、STUN 、 NTP 、SSDP 、BGP等 。
传输层协议
TCP传输控制协议
全称:Transmission Control Protocol,是一种面向连接的、可靠的、基于字节流的传输层通信协议,TCP旨在适应支持多网络应用的分层协议层次结构 。连接到不同但互连的计算机通信网络的主计算机中的成对进程之间依靠TCP提供可靠的通信服务 。TCP假设它可以从较低级别的协议获得简单的,可能不可靠的数据报服务 。原则上,TCP应该能够在从硬线连接到分组交换或电路交换网络的各种通信系统之上操作 。
网络层协议
IP协议
IP指网际互连协议,Internet Protocol的缩写,是TCP/IP体系中的网络层协议 。设计IP的目的是提高网络的可扩展性:一是解决互联网问题,实现大规模、异构网络的互联互通;二是分割顶层网络应用和底层网络技术之间的耦合关系,以利于两者的独立发展 。根据端到端的设计原则,IP只为主机提供一种无连接、不可靠的、尽力而为的数据包传输服务 。
链路层协议
PPP协议
【深入浅出RPC服务 | 不同层的网络协议】点对点协议(Point to Point Protocol,PPP)为在点对点连接上传输多协议数据包提供了一个标准方法 。PPP 最初设计是为两个对等节点之间的 IP 流量传输提供一种封装协议 。在 TCP-IP 协议集中它是一种用来同步调制连接的数据链路层协议(OSI模式中的第二层),替代了原来非标准的第二层协议,即 SLIP 。除了 IP 以外 PPP 还可以携带其它协议,包括 DECnet 和 Novell 的 Internet 网包交换协议(IPX) 。
每层协议之间的关系

深入浅出RPC服务 | 不同层的网络协议

文章插图
发送端的流程
1.发送端将用户数据抛给RPC层时,RPC协议将用户的数据(消息体)加上RPC头部,然后抛给下一层“传输层“
2.”传输层”收到“应用层”的数据后,不会考虑上一次的协议是啥,它会将整个传递进来的数据作为‘消息体’,加上TCP头部后继续向下一层“网路层”抛 。
3.”网络层“收到数据后,也不会考虑上一次的协议是啥,会将整个传递进来的数据作为‘消息体’并加上IP头部,继续继续抛向下一层”数据链路层“ 。
4.”数据链路层“同样加上mac头部,最后由物理层通过光电信号传输到接收端 。
接收端的流程
1.接受端收到数据后,”数据链路层“开始解析,识别以太网头部,取出数据后向上抛给”网络层“ 。
2.”网络层“识别IP头部后,取出数据,向上抛给”传输层“ 。
3.”传输层“收到数据后,识别TCP头部,取出数据后继续向上抛给”应用层“ 。
4.”应用层“识别RPC协议头部,最终取出发送端的用户数据 。
每层协议的设计TCP协议
设计的目的
在网络发展的过程中,IP协议提供了让彼此相连的主机之间能够进行数据传送 。但是IP协议无法让接收信息的主机知道从远处传送来的数据究竟要给到哪一个进程进行处理 。TCP(传输控制协议)就是为了解决进程间的通信问题而发展出来的协议 。
深入浅出RPC服务 | 不同层的网络协议

文章插图
1.源端口号和目标端口号:没有这两个端口号 。数据就不知道应该发给哪个应用 。
2.包的序列号:为什么要给包编号呢?是为了解决乱序的问题 。不编好号怎么确认哪个应该先来,哪个应该后到呢 。
3.确认序列号:发出去的包应该有确认,要不然我怎么知道对方有没有收到呢?如果没有收到就应该重新发送,直到送达 。这个可以解决不丢包的问题 。
4.状态位:SYN 是发起一个连接,ACK 是回复,RST 是重新连接,FIN 是结束连接等 。TCP 是面向连接的,因而双方要维护连接的状态,这些带状态位的包的发送,会引起双方的状态变更 。
5.窗口大小:TCP 要做流量控制,通信双方各声明一个窗口,标识自己当前能够的处理能力,发的太快处理不过来,发的太慢就会有空闲,使用窗口大小来达到一个最佳的处理水平 。




推荐阅读