IP地址
概念
IP地址用于定位主机的网络地址
格式
IP地址是一个32位的二进制数, 被分割为4个 ''8位二进制数'' 例如:
01111111.00000000.00000000.00000001。
但通常用点分十进制来进行表示 即为:
127.0.0.1。
特殊IP
127.*的IP地址用于本机回环测试,通常是 127.0.0.1。
本机回环主要用于本机的网络通信(系统内部为了性能,不会走网络的方式传输)
端口号
IP地址解决了网络通信时,定位网络主机的问题。而端口号就解决了当确定主机后,由哪个进程来接受数据的问题。
概念
端口号用于标识主机中发送数据和接受数据的进程。在网络通信中,进程可以绑定一个端口号,来发送即接受网络数据。
简短来说:端口号用定位定主机中的进程。
格式
端口号是0~65535范围的数字
注意事项
不同的进程不能绑定同一个端口号,而一个进程可以绑定多个端口号。
IP地址与端口号的联系
IP地址用于定位主机,确定主机后端口号用于定位主机中的进程。
下面利用西游记中的台词来举例
协议
当有了IP和端口号以后,就可以确定网络的一个进程,但如果要进行网络通信还需要明确通信双方的数据格式,此时就需要通信双方来根据一个约定来确保双方的通信。
概念
协议是网络协议的简称,网络协议是网络通信所需要遵守的一组约定,如怎么建立连接,如何相互识别等。只有遵守了这个约定才可以进行计算机之间的相互同通信。
作用
计算机直接如果想要传递各种不同的信息,需要约定好双方的数据格式,这个约定好的标准就是网络协议。
知名协议端口
系统端口号范围为 0 ~ 65535,其中:0 ~ 1023 为知名端口号
22端口:预留给SSH服务器绑定SSH协议
21端口:预留给FTP服务器绑定FTP协议
23端口:预留给Telnet服务器绑定Telnet协议
80端口:预留给HTTP服务器绑定HTTP协议
443端口:预留给HTTPS服务器绑定HTTPS协议
网络通信中的问题
由于进行网络通信中的过程是非常复杂的,这就导致要进行约定的协议所需考虑的细节就变多了,而随着细节越来越多就会导致协议本身变得也越来越复杂,这就会使程序员在学习和维护变得即难学又难维护,无论是学习成本还是维护成本就大幅提高。所以我们就需要进行拆分,但由于协议过于复杂,就会使拆分出的协议也越来越多,此时为了进一步的方便程序员的学习和维护,我们就按照所对应功能进行分类,即 "协议分层"。
协议分层
作用
按照协议的作用进行分成,上次协议调用下层协议,下次协议给上层协议提供服务。
注意
不能隔层调用!!!
好处
协议的分层类似于封装,大大降低了我们的学习成本和维护。
例如人与人直接打电话时,此时的电话就好比已经分层好的一层协议人们只需要学会汉语,就可以通过汉语来进行沟通和交流,但如果没有进行分层,人们就需要先学习如何制造电话,和学习汉语才可以进行正常的交流
OSI七层模型
TCP/IP五层(四层)模型
图片源自网络! ! !
封装
应用层
应用程序会按照约定好的应用层协议把数据整理成约定好的应用层数据报文
应用层会把整理好的应用数据报,交给传输层来进一步处理。
传输层(这里以TCP协议为例)
TCP会在应用层传过来的数据上加上TCP报头。
传输层则会把这个数据继续转交给网路层进行处理
网络层(这里以IP协议为例)
IP协议会在传输层传过来的数据上加上IP报头。
数据链路层(这里以以太网协议为例)
以太网协议会在网络层传过来的数据开头加上帧头在结尾加上帧尾
物理层
数据已经组织好,通过物理层设备就把上述数据的二进制bit流,转换成 光信号/电信号进行传输
以上数据由运用层开始进行层层传输的过程中,每一层都对原有的数据进行了相应的包装。这个过程就称之为“封装”。
分用
当接受端接收到封装好的数据以后对其进行层层拆分的过程就成为 “分用”
物理层
接收方的网卡接收到了其他硬件设备发送的 电信号/光信号 以后,拿这些信号解析成一些二进制的bit 数据。交由数据链路层由以太网协议负责解析
数据链路层
网络层
传输层
应用层
应用程序得到数据报文以后对其进行解析,完成操作。
简单来说分用就是封装的逆过程!
客户端和服务器
服务端:在常见的网络数据传输场景下,把提供服务的一方进程,称为服务端,可以提供对外服务。
客户端:获取服务的一方进程,称为客户端。