Linux网络基础

发布时间:2024年01月19日

目录

1.OSI七层模型

2.TCP/IP五层(或四层)模型

3.网络传输基本流程

IP地址和MAC地址

网络传输基本流程

4.网络套接字编程

端口号

TCP协议

UDP协议?

网络字节序?

?socket编程接口

sockaddr结构?


1.OSI七层模型

OSI(Open?System?Interconnection,开放系统互连)七层网络模型称为开放式系统互联参考模型, 是一个逻辑上的定义和规范;
OSI模型分为 7层自下而上为,
物理层,数据链路层,网络层,传输层,会话层,表示层,应用层
物理层:光/电信号的传递方式.
数据链路层:相邻设备之间数据帧传输,完成帧同步,差错控制,流量管理,链路管理
网络层:地址管理与路由选择
传输层:两端之间的数据传输
会话层:??管理传输层以下的分层
表示层: 网络标准数据格式的转换
应用层:针对特定应用的协议
如简单电子邮件传输(SMTP)、文件传输协议(FTP)、网络远程访问 协议(Telnet)
DNS协议为域名解析协议,HTTP协议是超文本传输协议
交换机在数据链路层,路由器在网络层

为什么要划分成为层状结构呢?? ? ?a.场景复杂? ? ?b.功能解耦,便于人们进行各种维护
?

下面是图片帮助理解一下

2.TCP/IP五层(或四层)模型

TCP/IP 是一组协议的代名词,它还包括许多协议,组成了 TCP/IP 协议簇 .
TCP/IP 通讯协议采用了 5 层的层级结构,每一层都呼叫它的下一层所提供的网络来完成自己的需求

下一层为它的上一层进行服务?

TCP/IP五层模型把OSI七层模型最上面的三层统一称为应用层

物理层我们考虑的比较少. 因此很多时候也可以称为 TCP/IP四层模型.

对于一台主机, 它的操作系统内核实现了从传输层到物理层的内容;
对于一台路由器, 它实现了从网络层到物理层;
对于一台交换机, 它实现了从数据链路层到物理层;
对于集线器, 它只实现了物理层; ?
ICMP报文通过(IP)协议来传输;

3.网络传输基本流程

IP地址和MAC地址

Mac地址就是工作在局域网的ip地址(局域网中表示主机的唯一性:MAC地址,在win和linux下分别可以使用ipconfig和ifconfig指令打印出MAC地址。而IP地址通常在广域网中使用,但实际上ip地址既可以在局域网中使用又可以在广域网中使用,但我们暂且不谈在局域网中的使用,只谈在广域网中。

一台计算机可以绑定多个网卡,进而可以拥有多个MAC地址。

IP地址应用于OSI第三层,即网络层,而MAC地址应用在OSI第二层,即数据链路层

网络传输基本流程

同一个网段内的两台主机进行文件传输.

跨网段的主机的文件传输. 数据从一台计算机到另一台计算机传输过程中要经过一个或多个路由器

?结论:

1.从上到下交付数据的时候,要添加报头。从下到上递交数据的时候,要去掉报头


2.封装的本质:添加报头? ? ? ? 解包:去掉报头&&展开分析

3.以太网是局域网的一种
?

4.在使用TCP/IP协议的网络中,IP及其向上的协议,看到的报文都是一样的。

5.不同的协议层对数据包有不同的称谓,在传输层叫做段(segment),在网络层叫做数据报 (datagram),在链路层叫做帧(frame).

6.OSI的哪一层通常同时使用报头和报尾进行封装? 数据链路层

4.网络套接字编程

端口号

一个进程可以绑定多个端口号; 但是一个端口号不能被多个进程绑定;?

IP地址用于标识主机的唯一性,端口号用于标识主机上的对应网络通信socket

网络通信的本质实际就是进程间通信

TCP协议

UDP协议?

网络字节序?

TCP/IP协议规定,网络数据流应采用大端字节序,即低地址高字节.

?socket编程接口

sockaddr结构?

应用层的socket API是一层抽象的网络编程接口,他适用于各种网络层协议,如IPV4,IPV6,然而各种网络协议的地址格式并不相同,例如Inet socket,Unix Domain socket的网络地址并不相同。所以为了解决这样的问题,搞出来了struct sockaddr结构体,定义好的struct sockaddr_in或struct sockaddr_un结构体指针可以直接赋值给struct sockaddr类型指针,相关函数内部会提取struct sockaddr结构体的前两个字节内容,如果前两个字节内容是AF_INET宏,那就在函数内部强转回struct sockaddr_in类型的指针,如果是AF_UNIX,那就在函数内部强转回struct sockaddr_un类型的指针。


其实这样的方式不就是C++的多态吗?用基类指针接收派生类对象指针


?

编写makefile

?

文章来源:https://blog.csdn.net/m0_71920611/article/details/135619576
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。