ip地址
就像我们人与人之间的识别一样, 不能只看外貌来识别, 他还需要有像身份证一样的唯一身份表示, 对于计算机来说, 这种身份标识就称为IP地址.
IP地址主要用于表示网络主机, 其他网络设备(例如路由器)的网络地址.
格式: IP地址的格式, IP地址是一个32位的二进制数, 通常被分割为4个8位二进制数, 例如:011001100.00000100.00000101.00000110
IP协议是为计算机网络相互连接进行通信而设计的协议。在因特网中,它是能使连接到网上的所有计算机网络实现相互通信的一套规则,规定了计算机在因特网上进行通信时应当遵守的规则。任何厂家生产的计算机系统,只要遵守IP协议就可以与因特网互连互通。各个厂家生产的网络系统和设备,如以太网、分组交换网等,它们相互之间不能互通,不能互通的主要原因是因为它们所传送数据的基本单元(技术上称之为“帧”)的格式不同。IP协议实际上是一套由软件程序组成的协议软件,它把各种不同“帧”统一转换成“IP数据报”格式,这种转换是因特网的一个最重要的特点,使所有各种计算机都能在因特网上实现互通,即具有“开放性”的特点。正是因为有了IP协议,因特网才得以迅速发展成为世界上最大的、开放的计算机通信网络。因此,IP协议也可以叫做“因特网协议”。
IP协议中还有一个非常重要的内容,那就是给因特网上的每台计算机和其它设备都规定了一个唯一的地址,叫做“IP地址”。由于有这种唯一的地址,才保证了用户在连网的计算机上操作时,能够高效而且方便地从千千万万台计算机中选出自己所需的对象来。
IP地址就像是我们的家庭住址一样,如果你要写信给一个人,你就要知道他(她)的地址,这样邮递员才能把信送到。计算机发送信息就好比是邮递员,它必须知道唯一的“家庭地址”才能不至于把信送错人家。只不过我们的地址是用文字来表示的,计算机的地址用二进制数字表示。
IP地址被用来给Internet上的电脑一个编号。大家日常见到的情况是每台联网的PC上都需要有IP地址,才能正常通信。我们可以把“个人计算机”比作“一台电话”,那么“IP地址”就相当于“电话号码”,而Internet中的路由器,就相当于电信局的“程控式交换机”。
端口号
所谓端口, 就是程序的入口, 客户端通过ip地址, 可以找到对应的服务端, 但是每一个服务器都有很多个应用端口, 如果想知道想要请求的应用是什么, 就必须知道应用的端口, 每一个应用程序对应着一个端口号, 这就类似于一个快递员通过ip找到了收件人的家, 但是还需要通过手机号来确认是这家人的谁买的东西, 这个手机号就类似于端口, 这个人就相当于每一个应用程序, 客户端在找到了正确的端口后, 才能在应用程序之间进行通信
端口号有一个数字范围: 0 ~ 65535, 在网络通信当中, 进程通过绑定一个端口号, 来发送和接收数据. 但是两个不同的进程无法绑定同一个端口号, 但是一个进程可以绑定多个端口号.
一个进程启动后, 操作系统会随机分配一个端口, 程序代码, 进行网络编程的时候, 需要绑定端口号来进行数据的发送和接收,
通过以上两点, 一个是IP地址, 一个是端口号, 那么知道IP后, 我们就可以知道我们想要通信的计算机在网络上的逻辑位置, 此时再知晓端口号之后, 两台计算机的应用程序之间就可以进行数据的交换, 或者说是信息的发送和接收.
但是, 计算机的文件有这么多种类型, 如何让对方知道我们传过去的是什么呢? 这就得提到计算机在传输的时候的协议了.
协议
协议, 是网络协议的简称, 网络协议就是制定了两台计算机之间数据交换的规则. 经过的所有网络设备, 都需要遵守这样的一组约定规则, 只要相互遵守这个约定, 那么计算机之间就可以正确的识别信息.
组成协议的三要素:
- 语法: 数据与控制信息的结构或者格式
- 语义: 即需要发出何种控制信息, 完成何种动作已经做出什么反应
- 时序: 即时间实现顺序的详细说明
协议分层
在指定协议的时候, 如果笼统的将所有约定都指定在一起, 那么这个工作量是相当大的, 而且后面也不利于维护, 每一层的工作量大, 不方便实现, 所以将协议分为好几层
运作方式: 数据由传送端的最上层产生, 然后逐层的, 由上层以此往下层进行传送和封装, 经过每一层, 都会在数据信息的前端增加一些该层专用的信息, 这些信息成为报头, 然后才能传给下一层, 可以类比一下, 其实每一层加的这些报头可以理解为寄快递的时候, 给商品上的一层层包装, 到了最底层的时候, 数据完成包装, 然后通过物理层, 通过网络线, 电话线, 光媒等媒介进行传送,
接收段收到数据后, 就开始一层一层的拆包, 由最底层一直向上拆包, 知道最上层.
五层协议体系结构
(1) 应用层
应用层是体系结构中的最高层, 应用层的任务就是通过应用进程之间的交互来完成特定的网络应用, 应用层协议定义的是 应用进程通信和交互的规则. 进程就是指的主机中正在运行的程序.
(2) 运输层
运输层就是负责想两台主机中进程之间的通信提供通用的数据传输服务, 应用进程利用该服务传送应用层报文, 所谓通用就是, 多个应用都可以使用这个传输层的服务.
(3) 网络层
网络层负为分组交换网上的不同主机提供通信服务, 发送数据时, 网络层把运算层产生的报文段, 或者是用户数据报封装成分组或包进行传送, 在TCP/IP协议中, 网络层使用的是IP协议, 因此也叫作IP数据报. 网络层将数据封装IP.
(4)数据链路层
数据链路层也称为链路层, 两台主机之间的数据传输, 总是一段一段的在链路层上传输. 在两个相邻的结点之间传输数据的时候, , 数据链路层将网络层教下来的IP数据报组装成帧, 在两个相邻结点间的链路上传送帧
(5)物理层
物理层是OSI的第一层,它虽然处于最底层,却是整个开放系统的基础。物理层为设备之间的数据通信提供传输媒体及互连设备,为数据传输提供可靠的环境。如果您想要用尽量少的词来记住这个第一层,那就是“信号和介质”。
封装&分用
不同的协议对数据包有不同的称为, 在传输层叫做段, 在网络层叫做数据报, 在链路层叫做帧, 引用层数据通过协议栈发到网络上时, 每层协议都要加上一个数据首部, 称为封装, 首部信息中包含了一些类似于首部有多长, 在和有多长的信息, 数据封装成真后发送到传输截止上, 到达目的主机后每层协议再剥掉相应的首部, 根据首部中的, 上层协议字段, 将数据交给对应的上层协议处理.
分用即封装的逆过程
两台主机之间的通信
发送方要给目的主机发送一条信息text,
(1) 首先是经过应用层, 应用层拿到数据, 将数据封装成数据包,调用传输层的api接口,然后来处理这个数据
(2) 传输层拿到数据之后, 将上述整个数据包作为udp数据包的数据部分,此处,UDP协议再给应用层数据报加个UDP报头,就是为了再贴一层标签,从而在标签上填写必要的属性.传输层协议,最关键的属性,源端口和目的端口了.
(3) 网络层, UDP数据包已经有了, 接下来就是把这个数据包交给网络层协议. (常见的有IP协议), 然后进一步封装, 添加上IP协议的报头.
(4)封装好后交给数据链路层, 数据链路层最典型的协议是以太, 给上面的数据报加上以太网数据报头mac, (mac地址, 也是一个描述主机在网络上逻辑位置的地址, 功能和IP类似, mac用来描述两个相邻结点的数据)
(5) 剩下的就交给物理层了, 数据在物理层传输, 通过媒介: 广电信号, 电话线, 等传输媒介