目录
一、IP地址
IP地址是IP协议提供的一种统一风格的地址格式。它为互联网上每一个网络以及每一台主机分配一个逻辑地址,只有这样的地址才能从千千万万的计算机中找到所需的对象来。
1、格式
IPV4是一个32位的二进制数。通常被划分为4*8位二进制数,也就是4字节。IP地址通常使用“点分十进制”表示成(a,b,c,d)的形式,其中每一位可以表示0-255的十进制整数。
每个IP地址又可分为两部分。即网络号部分和主机号部分:网络号表示其所属的网络段编号,主机号则表示该网段中该主机的地址编号。根据网络规模大小还可以分成A,B,C,D,E五类。
2、特殊IP
127.*
的IP地址用于**本机环回(loop back)**测试,通常是127.0.0.1
二、端口号
所谓的端口,就好像是门牌号一样,客户端可以通过ip地址找到对应的服务器端,但是服务器端是有很多端口的,每个应用程序对应一个端口号,通过类似门牌号的端口号,客户端才能真正的访问到该服务器。为了对端口进行区分,将每个端口进行了编号,这就是端口号。
网络中的计算机通过IP地址表明自己的身份,但这只能表明某台计算机。一台计算机可以有着很多的操作提供着很多的服务,如数据库服务,Talent(23端口号),FTP服务(21端口号),HTTP服务等,我们可以通过端口号去寻找这个台计算机哪个端口提供的什么服务。并且每台电脑的端口号不能重复。
端口号可以标识主机中发送数据以及接收数据的进程(因为提供服务就需要有进程,在提供对应的进程中提供其端口号)。两个不同的进程,不能绑定同一个端口号,但 一个进程可以绑定多个端口号。
三、协议
协议,网络协议的简称,网络协议是通信计算机双方需要遵守同一组约定,如何建立连接、怎样相互共识、传输格式。只有遵循这样的约定,通信双方才能进行交流。
1、三要素
语法:数据以及控制信息的结构与格式;
语义:需要发出何种信息,完成何种任务,做出何种回复;
时序:事件实现的顺序;
语法:相当于两个人说话,约定好都用中文或者英语,这样才能保障可以进行正常的交流;
语义:组织好语言,等待对方说完话我们再进行应答。
时序:我们进行自我介绍的时候,先介绍自己的姓名,再介绍自己来自哪里等等。
四、协议分层
因特网是一个非常复杂的系统,里面有着大量的应用程序,协议,链路,等等,加重了程序员学习以及使用,开发的成本。针对这个问题,大佬们将协议通过协议的服务与功能进行分层,使其模块化,降低了程序员接触网络协议的成本。
所谓的协议分层,就是根据互联网所需要的服务和功能,在体系结构上分成若干个层次,协议的服务和功能与哪一层的服务和功能相对应,该协议就属于哪一层。每层协议层通过在该层中执行某些动作或使用直接下层的服务来提供服务。协议分层具有概念化和结构化的特点。
上层协议调用下层协议,下层协议为上层协议提供服务,不可隔层调用。
1、优势
降低了学习成本,方便维护,可以针对某层协议进行协议的替换。
2、两种经典分法
1.OSI 七层
应用层 | 应用层是ISO/OSI模型中最靠近用户的一层,应用层协议直接面对用户的需求,例如与发送邮件相关的应用层协议可以规定诸如邮件地址的格式、邮件内容的段落表示、客户与服务器进行交互的命令串等。 |
表示层 | 表示层协议规定对来自应用层的数据如何进行表达,例如采用什么样的文字编码、是否及如何进行压缩、是否及如何加密等。 |
会话层 | 会话层用于建立和管理不同主机的两个进程之间的对话。会话层可以管理对话,可允许对话在两个方向上同时进行,也可以强制对话同时只在一个方向上进行。 |
传输层 | 依赖物理层、数据链路层和网络层,任意一个网络节点都能把任何信息传递到其他任意节点,而传输层在物理层、数据链路层和网络层提供的节点间的通信能力基础上进一步提供了面向应用的服务。 |
网络层 | 解决如何标识通信各方和数据如何从源到达目的这个问题。网络层用特定的网络层地址来标识整个网络中的一个节点,并负责使来自传输层的应该到达某个网络层地址的数据能够被送达这个网络层地址所对应的网络节点。 |
链路层 | 简称链路层,它依赖物理层提供的比特传输能力把数据组织成为有边界的传输单位,称为“帧”。链路层把来自网络层的数据组织成“帧”,然后再通过物理层向外发送。 |
物理层 | 简单地说,物理层协议对与基本物理信号传输有关的机械、电气等功能进行描述。若生产相互连接的两个设备的两个厂商都遵循相同物理层规范 |
2、TCP/IP (五层/四层)
TCP/IP协议主要由网络层的IP协议 和 传输层的TCP协议组成 。
TCP负责发现传输的问题,一有问题就发出信号,要求重新传输,直到所有数据安全正确地传输到目的地。而IP是给因特网的每一台联网设备规定一个地址。
其将OSI分法中的应用层,表示层,会话层认为到了一层(四层分法将传输层也包含进来了)
五、封装
封装的思想我们在使用Java的时候一定都会有很深的体会。隐藏对象内部的复杂性、只对外公开简单的接口。便于外界调用从而提高系统的可扩展性、可维护性。通俗的说,把该隐藏的隐藏起来,该暴露的暴露出来,这就是封装的设计思想。就像一块块积木,如果你想搭建一个房子就可以拿过来你需要对应的积木块并且拼装在一起就好了。
我们在程序设计的时候就追求“高内聚、低耦合”
高内聚:类的内部数据操作细节自己完成,不允许外部干涉;
低耦合:仅对外部暴露少量的方法用于使用。
封装的好处在于使代码看起来不会杂乱无章、可以减小代码之间的耦合性,如果想要替换里面的某些功能,以及协议,就可以进行替换。
六、分用
host1的p3进程向host2的p1进程传输信息,与此同时host3的p4进程也向host2的p2进程传输信息。
对于接收端,接收端运输层对到达的多个运输层报文进行识别,提取socket信息,将报文段定位到对应的socket上,该过程称为多路分用。
对于发送端,从不同socket上收集信息并分别加上首部,通过网络层发送出去,称为多路复用。
七、客户端与服务器
1、定义不同
客户端:也称用户端,是指与服务器相对应,为客户提供本地服务的程序。除了一些只在本地运行的应用程序之外,一般安装在普通的客户机上,需要与服务端互相配合运行。接受服务的另一方也称为客户端。
服务器端:,服务器是向网络上的其他机器提供某些服务的计算机系统。接收并储存客户端发送过来的数据或请求,并且对请求进行响应,发送数据给客户端
2、面向对象不同
客户端为用户提供服务。
服务器为客户端提供服务。
3、请求/响应
1、请求:
在浏览器地址栏输入地址,点击回车请求服务器,这个过程就是一个请求过程。
请求是向服务器发送要求来获取数据、进行相关操作等请求。
2、响应:
服务器根据浏览器发送的请求,返回数据到浏览器在网页上进行显示,这个过程就称之为响应。
响应是向服务器申请相关操作,服务器在进行处理之后返回相关内容或者返回请求失败的一个回应叫做响应。