Linux网络编程(未完)
1.1:OSI参考模型及TCP/IP参考模型
想必大家都听过这两个名词,首先是OSI模型,OSI(Open System Interconnect),即开放式系统互联。 一般都叫OSI参考模型,是ISO(国际标准化组织)组织在1985年研究的网络互联模型。该体系结构标准定义了网络互连的七层框架(物理层、数据链路层、网络层、传输层、会话层、表示层和应用层),即ISO开放系统互连参考模型。在这一框架下进一步详细规定了每一层的功能,以实现开放系统环境中的互连性、互操作性和应用的可移植性。
因为其太过于复杂,所以后面改成了TCP/IP模型。
下面是两者的关系图,想必很多人都看过,很重要的一个图,一定要记住,一定要记住,记不住....就算了,熟悉就好。
(图片来自于某度)(ps,网际层又被称为网络层)
这里需要对TCP/IP的4层模型进行简要介绍:
网络接口层:负责将二进制流转换为数据帧,并进行数据帧的发送和接收。要注意的是,数据帧是独立的网络信息传输单元。
网络层:负责将数据帧封装成IP数据包,并运行必要的路由算法。
传输层:负责端对端之间的通信会话连接与建立,传输协议的选择根据数据传输方式而定
应用层:负责应用程序的网络访问,这里通过端口号来识别各个不同的进程。(我在这里解释一个啥叫端口号,因为一个系统里面,有很多的程序,有很多的程序都要用到网络,但是计算机怎么区别呢,就是通过这个端口号。)
1.2:tcp/ip协议族
一定要记住ipv4和ipv6的所在层,其实不用特意去记忆,有方法的记忆,是非常好的,记住每一个协议的作用就可以了。
比如最底层有ARP,RARP,MPLS(图中没有标出,但是读者应该知道,这个图也是很常见,很出名的。)
其中ARP用于获得同一物理网络中的硬件主机地址。等等。
其中有两个协议值得分辨,那就是TCP和UDP
1.2.1:tcp
因为TCP的上一层就是应用层,因此,TCP数据传输实现了一个应用程序道另一个应用程序的数据传递,而应用程序通过编程调用TCP并使用TCP服务,提供需要准备发送的数据,用来区分接收数据应用的目的地址和端口号。
TCP三次握手协议
参考书籍《嵌入式Linux应用程序开发》第二版,华清远见嵌入式培训中心 编著