首先,学习网络编程,我整理了一个大概的框架OSI就是很多人所说的七层协议模型,但我们日常运用的还是TCP/IP协议族这种方式
接下来通过TCP/IP的四层协议,来针对性的细化学习
- 网络接口层:也叫链路层
- 网络接口层在发送端将上层的IP数据报封装成帧后发送到网络上;数据帧通过网络到达接收端时,该结点的网络接口层对数据帧拆封,并检查帧中包含的MAC地址。如果该地址就是本机的MAC地址或者是广播地址,则上传到网络层,否则丢弃该帧。MAC地址,也就是网卡的序列号,每一台的MAC地址是唯一的
作用:用于定义网络设备的位置,在Windows命令中输入 ipconfig -all
物理地址就是MAC地址
- 网际层
网际层提供了基于无连接的数据传输、路由选择、拥塞控制和地址映射等功能,这些功能主要由4个协议来实现:IP、ARP、 RARP和ICMP,说到IP,就要提一下IP的私有和公有
私有IP
一般来说就是局域网,例如:
公有IP
连接万维网(互联网),例如:
假设我们在家里通过路由器连接万维网,但想让父母朋友都可以连接,那么此时,就需要路由器解析出公有 IP和私有IP了,后面我会提到路由器具体的简单实现原理
在IP协议提供数据分组传输、路由选择等功能,ARP和RARP提供逻辑地址与物理地址映射功能,ICMP协议提供网络控制和差错处理功能。
- 传输层
传输层分为UDP和TCP两种方式
- TCP是一种面向连接的可靠传输协议,为什么它可靠,因为通过三次握手,四次挥手来实现连接对象,保证了数据传输的稳定性
- udp直观来说就是一种广播,优势就是效率高,但它的数据不稳定
TCP和UDP的区别我用现实生活的例子表示
TCP就是打电话,首先需要有一部手机,有手机号,跟朋友打电话需要拨号连接,等对方接通才能实现我跟朋友之间的交流
UDP就是写信,知道对方的地址信息,我会找一个邮局,或者古时候的飞鸽传书,但可能会有不确定的因素导致信息的丢失,比如鸽子被人打下来红烧。。。。
- 应用层
应用层就是应用程序的协议,比较常见的典型就是HTTP协议,什么叫做协议?
我觉得它实际上就是一种规定,就如同我们国家说汉语,美国说英语,日本说日语,为了实现数据的共享,需要指定一个规定来统一管理,所以,对于HTTP协议,我的理解就是基于TCP协议的一种客户端向服务器共享数据间的规定,当然不同的应用程序都有自己独有的协议,比如QQ,微信,迅雷。如果没有协议,那么QQ发送的信息可能会在微信中显示,那就乱套了。(这是我自己学习网络编程的一些个人见解,如果有理解错误,不到位的地方,希望各位大神可以告诉我)