网络结构分层
谈到网络,雷打不动的分层结构图。比较常用的为4层架构,和5层架构。网络接口层也叫mac层,对应数据链路层和物理层。协议设计原则为:下层看不见上层的内容,仅将上层协议包作为payload(负载)直接包装成下层的数据包。但难免会有特例,如:arp就违反了分层原则,arp(网络层和数据链路层之间)需要知道ip层的ip。
协议帧封装的过程,就是不断加消息头的过程,从代码角度可以理解为一层一层的函数调用。所以高层协议可以看成对底层协议函数的封装。
传输层 : 抽象出了端口的概念,通过端口区分从ip层获取的数据流向
网络层 : 抽象了ip地址的概念,将数据包发送到目的主机上,抽象掉了网络种类。
链路层 : bit流。完成物理层的物理信号数字化,通过mac地址将数据交付。
物理层 : 真实的信号如电信号,光信号,为真实携带信息传输的介质。
TCP/IP协议的应用层
应用层包括所有和应用程序协同工作,并利用基础网络交换应用程序的业务数据的协议。一些特定的程序被认为运行在这个层上,该层协议所提供的服务能直接支持用户应用。应用层协议包括HTTP(万维网服务)、FTP(文件传输)、SMTP(电子邮件)、SSH(安全远程登陆)、DNS(域名解析)以及许多其他协议。
TCP/IP协议的传输层
传输层的协议,解决了诸如端到端可靠性问题,能确保数据可靠的到达目的地,甚至能保证数据按照正确的顺序到达目的地。传输层的主要功能大致如下:
(1)为端到端连接提供传输服务;
(2)这种传输服务分为可靠和不可靠的,其中TCP是典型的可靠传输,而UDP则是不可靠传输;
(3)为端到端连接提供流量控制、差错控制、QoS(Quality of
Service)服务质量等管理服务。
传输层主要有两个性质不同的协议:TCP传输控制协议和UDP用户数据报协议。
TCP协议是一个面向连接的、可靠的传输协议,它提供一种可靠的字节流,能保证数据完整、无损并且按顺序到达。TCP尽量连续不断地测试网络的负载并且控制发送数据的速度以避免网络过载。另外,TCP试图将数据按照规定的顺序发送。
UDP协议是一个无连接的数据报协议,是一个“尽力传递”和“不可靠”协议,不会对数据包是否已经到达目的地进行检查,并且不保证数据包按顺序到达。
总体来说,TCP协议传输效率低,但可靠性强;UDP协议传输效率高,但可靠性略低,适用于传输可靠性要求不高、体量小的数据(比如QQ聊天数据)。
TCP/IP协议的网络层
TCP/IP协议网络层的作用是在复杂的网络环境中为要发送的数据报找到一个合适的路径进行传输。简单来说,网络层负责将数据传输到目标地址,目标地址可以是多个网络通过路由器连接而成的某一个地址。另外,网络层负责寻找合适的路径到达对方计算机,并把数据帧传送给对方,网络层还可以实现拥塞控制、网际互连等功能。网络层协议的代表包括:ICMP、IP、IGMP等。
TCP/IP协议的链路层
链路层有时也称作数据链路层或网络接口层,用来处理连接网络的硬件部分。该层既包括操作系统硬件的设备驱动、NIC(网卡)、光纤等物理可见部分,还包括连接器等一切传输媒介。在这一层,数据的传输单位为比特。其主要协议有ARP、RARP等。
总结
TCP/IP协议是我们在进行网络编程时不能绕开的知识点,鉴于我的知识水平还不够,就先写上面这些,如果要详细了解这部分知识可以在网络上查找相关资料,都是可以找到非常详细的讲解的。重要的是我们要坚持,努力学习,但我首先要自我批评,以为我自己就没怎么能坚持下去,所以我要进行一定的反思,希望大家以我为戒,坚持认真学习知识。