跳到主要内容

网络协议

Model

ISO/OSI

LayerScopeProtocol Data Unit(PDU)HeaderProtocols
1-Physical LayerPhysicalBit(0&1)RJ45/RS-232
2-Data Link LayerLANFrame(MTU:1500)Ethernet FrameARP/RARP
3-Network LayerInternetPacketIPv4/IPv6IP/ICMP/IPSec/IGMP/OSPF/RIP
4-Transport LayerHostSegment(MSS:1460)/DatagramTCP/UDPTCP/UDP/SCTP/DCCP
SSL/TLSSSL/TLS(Extensions:SNI/ALPN)
5-Session LayerData
6-Presentation LayerData
7-Application LayerApplicationDataHTTP/DNS/SSH/FTP/WebSocket

TCP/IP

  • Data Link Layer
  • Network Layer
  • Transport Layer
  • Application Layer

Encapsulation

Physical Layer(Layer 1)

PPP(Point-to-Point Protocol)

  • PPPoE(Point-to-Point Protocol over Ethernet)
  • PPPoA(Point-to-Point Protocol over ATM)

Network Layer(Layer 3)

Transport Layer(Layer 4)

Session Layer(Layer 5)

  • SOCKS

Presentation Layer(Layer 6)

Application Layer(Layer 7)

  • HTTP
  • DNS
  • FTP

Mindmaps

总结

物理层是物理世界的规范,比如通过什么物理媒介传输,接口如何设计,如何传输?常见的有ADSL,光纤如何,和802.11x系列的协议。物理层是对于物理世界的定义,我们暂时不管,后面有时间再去学习,现在专注于物理层以上的部分。

数据链路层是局域网之间的通信方式,不需要通过路由器,主要依赖于ARP协议和Mac地址表。交换机中会维护一份Mac地址表,里面有IP地址和Mac地址的对应关系,根据Mac地址表,交换机会把数据转发到对应的物理端口;由于设计缺陷,数据链路层存在ARP欺骗安全问题,一个主机可以持续发送ARP,声称自己是另外一个主机,如今的路由器和交换机都有Mac地址绑定功能,可以解决该问题。数据链路层的数据被称为Frame(帧),由物理层的0和1解码而来。

网络层用来传输跨局域网的数据,数据包经过路由器内部的IP转发和SNAT等,经路由器传输到其他的局域网,再进行数据链路层的传输。网络层的数据被称为Packet,被包裹在Frame中。

传输层就不再考虑传输的问题了,而是连接的问题,比如如何连接,连接是否稳定,是否是持久连接等。传输层的实现在操作系统中,比如端口,一些调优选项等。主要协议是TCP和UDP,数据被称为Segment,被包裹在Packet中。

再往上,也就是最后一层应用层,是真正的应用程序数据。当传输层把数据发送到目的主机时,操作系统负责将应用层数据转发给监听在特定端口上的进程,最后就完成了两个进程间的网络通信。

对于开发者而言,其实最重要的是传输层和应用层,其他的层看起来都很稳定,只有这两层是经常需要Debug的。