Linux网络编程基础、TCP与UDP、IP与端口等

Linux网络编程基础

本文由作者单独整理归纳,实属不易,难免存在漏、错地方,如有发现,请留言指出,定将及时纠正。

1. OSI模型

网络体系结构指的是网络的分层结构、以及每层使用的协议的集合。(公司很多部门,每个部门有不同的工作范畴) OSI协议参考模型是典型的网络体系结构,主要分一下七层:

OSI参考模型
应用层——————<高层>:应用于不同的软件
表示层——————<高层>:数据格式转换
会话层——————<高层>:找到传输层并调用,进行传输

传输层——————<低层>:数据打包并发送
网络层——————<低层>:寻找发送路线
数据链路层————<低层>:参数差错处理、屏蔽硬件差异
物理层——————<低层>:解决不同硬件间的通信

本文并不讲全所有的层,只摘取重点
作用:
1.物理层:
负责通过光纤等介质将两台计算机连起来,然后在计算机之间通过高低电频传送0/1这样的电信号

2.数据链路层:
0/1毫无规则的话计算机看不懂,制定个0/1传送规则,多少电信号为一组,每组怎么标识,以太网协议出现
以太网协议规定:一组电信号构成一个数据包,称为帧,由标头和数据两部分构成,大小一般为64 ——1518字节。
帧的长度不固定,标头长度固定,18字节,每帧单独发送,数据部分则是具体数据,接受者需要接受的内容

3.MAC地址:
把A的数据通过物理层和数据链路层发给另外的谁呢?怎么区分电脑与电脑呢?
每个进入网络的计算机都有网卡接口,每个网卡都有一个唯一的地址,这个地址叫MAC地址。
计算机之间的数据传送,就是通过MAC地址来唯一寻找、传送的。MAC地址由48字节构成,网卡生产时被唯一标识了

计算机A通过ARP协议得到计算机B的MAC地址,通过的是广播方式,信息携带的IP与自身比较,匹配则反馈,否则忽略

4.网络层
首先我们要清楚我们所处的网络由无数个子网构成,网络就像学校,希望就像班级。

在广播的时候,也只有同一个子网的计算机可以收到你的信息,那么,怎么确定是否在同一子网呢?

  1. 区分MAC地址属不属于同一子网的办法: IP协议
    问题来了:IP协议怎么区分MAC地址的?
    IP协议所定义的地址称为IP地址,IP协议分IPV4 和 IPV6,目前常见IPV4。
    IPV4 由32位二进制数构成,分为4段,范围肯定就是0.0.0.0——255.255.255.255咯,没问题吧?
    IP地址呢又被分为两部分,前部分叫网络部分,后部分叫主机部分,暂时不知道各自占几段哈。
    如果A B两电脑在同一子网,那么要求AB的网络部分相同,问题来了,怎么区分网络部分和主机各占多少呢?

  2. 又来一个打辅助的了————子网掩码,掩码也是32位二进制,规定掩码网络部分二进制全为1,主机部分全为0;
    掩码是有了,怎么辅助呢?掩码的特点,网络部分全为1,那我们岂不是直到网络占多少位了嘛?
    那借用掩码和自身IP进行与(and)运算,是不是就知道IP地址的网络占多少位了?然后两个IP再比较各自网络是否相同。

解决了两台电脑在同一子网的问题,那如果不在同一子网呢?不在同一子网,我们将数据包发给网关
网关帮我们进行转发并传送。

  1. DNS服务器:全世界这么多网络,每一个主机有一个IP,能记得住吗?记不住的,所以就有了DNS服务器
    这玩意就负责解析IP和域名。啥叫域名?www.baidu.com这就叫域名,是不是有了它就方便多了?
    至于到底怎么解析的,本文暂不介绍,后期补上。
    综合:通过网络层,我们是不是就可以找到另外一台电脑是否和我们处于同一子网了??我们也就知道他的位置了嘛。

5.传输层
经过物理层、数据链路层、网络层,我们可以将A的数据传给B了,但B电脑有100个程序,发给谁呢?
这个时候就安排了一个叫“端口(port)”的家伙上场了,也就是说我们在A给B传数据的时候,还要指定端口。
也就是说其实传输层就是建立端口到端口的通信,要注意区分网络层是主机到主机的通信
不要怀疑为什么你平时输IP没写端口,因为那是已经默认了。比如http的传输默认端口是80;

6.应用层:应用层就是最接近用户的,传输层传送了很多数据,各式各样的格式,看不懂怎么搞?
不要急,按照一定的数据格式规则进行就好了,它是给软件提供方接口,让程序能使用网络服务。
应用层提供的服务包括文件传输、文件管理以及电子邮件的信息处理等。

2. TCP/IP模型

TCP/IP 是一个复杂的协议族,是由一组专业化协议组成。TCP/IP模型将OSI简化成 4 层&#x

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值