网络初识的基础知识

一. ip地址用于标识网络主机,其他网络设备(路由器)的网络地址,用于定位主机的网络地址

ip地址格式:通常用一个32位的二进制数,被分成4个字节,用"点分十进制"表示(a.b.c.d,都是0-255之间的十进制数)。特殊的ip:127.0.0.1,用于本机环回测试的ip。

二. 端口号用于标识主机中发送数据,接受数据的进程。它主要用来定位主机中的进程。(进程绑定着端口号)类似发快递的情景,IP地址相当于收货地址,端口号相当于收货人。

端口号的格式:是0-65535的数字,在网络通信中,进程可以通过绑定一个端口号,来发送及接收网络数据。(注意:两个不同的进程不能绑定同一个端口号,但是一个进程可以绑定多个端口号),一个进程启动后,操作系统会随机分配一个端口。

以上我们有了ip地址和端口号,可以定位到网络中唯一的一个进程,现在我们可以通过进程把数据发送给对方,但是还有一个问题,网络通信是基于二进制数据传输的,如何告诉对方发送的数据是什么样的?由于数据类型多样,可能是文本,图片,视频等等,所以需要双方拟定好协议来规定彼此的数据格式。         

三. 协议:网络通信(网络数据传输)经过所有的网络设备都必须共同遵守的一组约定和规则。比如:怎么建立好连接,怎么样相互是识别等等,只有遵守这个约定,计算机之间才能进行通讯交流。协议最终体现为在网络上传输的数据包的格式。

知名协议的默认端口:

操作系统端口号范围0-65535,其中0-1023是知名端口号,这些端口是预留给服务端程序绑定广泛使用的应用协议,注意:某个服务器也可以使用1024-65535的端口号绑定知名协议。

五元组:

在TCP/IP协议中,用五元组来标识一个网络通信。

1. 源IP:标识源主机

2. 源端口号:标识源主机中该次通信发送数据的进程

3. 目的IP:标识目的主机

4. 目的端口号:标识目的主机中该次通信接收数据的进程

5. 协议号:标识发送进程和接收进程双方约定的数据格式。

四. 协议分层:由于实际网络通信复杂,对于网络协议来说,往往分成了多个层进行定义,每一层都有自己的事做。分层最大的好处,就是定义好每层之间的规范,然后都需要遵循并按照这个规范来对接。提供方来说,封装隐藏了具体实现的细节,只需要开放接口就行,对于使用方来说,不关心提供方如何实现的,只需要使用接口就行。

OSI七层模型:物理层->数据链路层->网络层->传输层->会话层->表示层->应用层

TCP/IP五层模型:物理层->数据链路层->网络层->传输层->应用层

应用层:负责应用程序之间的沟通,比如:电子邮件传输(SMTP),文件传输协议(FTP),网络远程访问协议(Telnet)等,网络编程主要就是针对应用层。

传输层:负责主机间的数据传输。比如传输控制协议(TCP),能确保数据可靠的从源主机发送到目标主机。

网络层:负责地址管理和路由选择。比如在IP协议中,通过IP地址来标识主机,并通过路由表的方式规划主机间的数据传输的线路(路由)。路由器就是工作在网络层。

数据链路层:负责设备间的数据帧的传送和识别。比如网卡设备的驱动,帧同步,冲突检测(遇到冲突就自动重发),数据差错校验等工作。交换机就是工作在数据链路层。

物理层:负责光/电信号的传递方式。比如现在以太网通用的网线(双绞 线)、早期以太网采用的 同轴电缆(现在主要用于有线电视)、光纤,现在的wifi无线网使用电磁波等都属于物理层的概念。

两台主机通过TCP/IP协议通讯的过程:

五. 封装应用层数据通过协议栈发到网络上时,每层协议都要加上一个数据首部,称为封装。首部信息中包含了一些类似于首部有多长,载荷有多长,上层协议是什么等信息。数据封装成帧后发到传输介质上,到达目的主机后每层协议再剥掉相应的首部,根据首部中 的 "上层协议字段" 将数据交给对应的上层协议处理。不同的协议层对数据包有不同的称谓,在传输层叫做(segment),在网络层叫做数据报 ,在链路层叫做

数据分装过程

应用层封装:一个程序内部自己约定好了一个应用层协议,当然也可以自定义应用层协议,只需要确定传输的信息和传输数据的格式(xml,json,protobuffer)当用户输入数据还是其他形式的数据都会被应用程序拟定构成应用层协议的报文。此时包含了Appl报头和用户数据。下一步就是程序会通过调用操作系统提供给应用程序的一些API把应用数据报交给传输层。

传输层封装:TCP协议要在之前应用层传过来的应用数据报之前加上个TCP协议报头,TCP报头中包含了源端口,目的端口等重要信息。随后传输层继续把这个新封装好的数据交给网络层。

网络层封装:IP协议把之前整个TCP数据报视为一个整体,在之前加上IP协议报头IP报头中包含了源IP和目的IP等重要信息。随后把新封装好的数据再交给数据链路层。

数据链路层封装:以太网数据帧给之前的数据加上帧头(源mac地址,目的mac地址)和帧尾(校验和),继续把新封装好的数据交给物理层。

物理层封装:数据已经组织好,就通过物理层的设备(网卡)把数据的二进制bit流,转换成光(光纤)/电(网线)信号进行传输。

六. 分用:总的来说就是封装的你过程,如果说封装是寄快递的过程,分用就是拆快递的过程。

物理层分用:接受方的网卡等硬件设备接受到光/电信号就把这些信号转换成二进制bit流。然后把这些数据交给数据链路层,由以太网协议负责解析。

数据链路层分用:把拿到的一个以太网数据帧,有以太网协议,去掉帧头和帧尾。剩下的数据交给网络层,由IP协议负责解析。

网络层:IP协议针对拿到的IP数据报再进行解析,去掉IP报头,把剩下的数据交给传输层,由TCP协议负责解析。

传输层:TCP协议针对拿到的TCP段再进一步解析,去掉TCP报头,把剩下的引用数据交给应用层,由接收方的应用程序解析。

应用层:接受放应用程序去掉Appl报头,根据关键的数据进行对应的操作。

七. 客户端:获取服务的一方进程,称为客户端。

八. 服务器:在常见的网络数据传输场景下,把提供服务的一方进程,称为服务端,可以提供对外服务。

九. 请求:向服务器发送的需求。

十. 响应:针对客户端发来的需求做出的应答。

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值