网络编程(一)


网络

将不同区域的电脑连接在一起,形成局域网、城域网、广域网。把分布在不同地理区域的计算机与专门的网布网络用通信线路互连成规模庞大的网络系统,从而使众多计算机可用方便第互相传递信息,共享硬件、软件、数据信息等资源
可达到资源共享、信息传递与集中处理、负载均衡与分布处理

通信协议

计算机网络中实现通信必须有的一些约定,即通信协议,是对速率、传输代码、代码结构、传输控制步骤、出错控制等指定的标准

通信接口

为了使两个节点之间能进行对话,必须在它们之间建立通信工具-接口,使彼此之间能进行信息交换

接口包括:

  1. 硬件装置:实现结点之间的信息传送
  2. 软件装置:规定双方进行通信的约定协议

网络协议层

将节点间的复杂联系指定协议,将复杂的通信过程简单化,国际标准化组织(ISO)制定的网络协议层,彼此之间之和相邻上下层通信

  • 应用层
  • 表示层
  • 会话层
  • 传输层
  • 网络层
  • 数据链路层
  • 物理层
    网络协议层模型

虽然攻击组织制定了这样一个网络通信协议模型,但是实际上互联网通信使用最多的网络通信协议是TCP/IP网络通信协议

TCP/IP协议

TCP/IP是一个协议族,也是按照层次划分,共四层:应用层、传输层、互联网络层、网络接口层
OSI网络通信协议层模型只是一个参考模型,而TCP/IP协议是事实上的标准。

  • 应用层
    • 对应OSI的应用层、表示层、会话层
  • 传输层
    • 对应OSI的传输层
  • 互连网络层
    • 对应OSI的网络层
  • 网络接口层
    • 对应OSI的数据链路层、物理层

TCP/IP协议层

数据封装

数据封装(Data Encapsulation)是指将协议数据单元(PDU)封装在一组协议头和协议尾中的过程。该协议是在协议数据单元(PDU)中实现的,其中每次的PDU一般由本层的协议头、协议尾和数据封装构成。
由于用户传输的数据一般都比较大,可能达到MB字节,一次性发送出去十分困难,所以将数据分成许多片段,再按照一定的次序发送出去。

应用层:准备数据
传输层:接收应用层数据添加上TCP的控制信息(TCP头部),这个数据单元称为段Segment,加入控制信息的过程称为封装。由此,将段交给网络层
网络层:接收到传输层的段,再添加上IP头部,这个数据单元称为包Packet。然后将包交给数据链路层
数据链路层:接收包后,添加上MAC头部和尾部,这个数据单位称为帧Frame。后将帧交给物理层。
物理层:将接收到的数据转化为比特流,然后传输

数据封装

数据拆封

数据拆封(Data dismantling),将每一层对应的数据拆除,将其余数据传递给上一层

物理层: 接收到比特流,处理后给数据链路层
数据链路层: 将接收到的数据转化为帧,再除掉MAC头部尾部,后将包给网络层
网络层: 接收到包,去除IP头部,转化为段
传输层: 接收段,去除TCP头部,剩余数据
应用层: 接收数据,处理数据
数据拆封

IP地址

用来标识网络中的一个通信实体的地址。通信实体可为计算机、路由器等。

IP地址:

  • IPV4:32位地址,以点分十进制表示,192.168.0.1
  • IPV6:128为16个字节,8个16位无符号整数,每个整数用四个十六位制表示,数之间用冒号分开,如:3ffe:2301:2332:489e:fedb:db32:32fd:5432

特殊IP:
127.0.0.1 - 本机地址
192.168.0.0 - 192.168.255.255私有地址,属于非注册地址,专门为组织机构内部使用

端口:
IP地址用来标识一台计算机,但是一台计算机上可用提供多种网络应用程序,使用端口来区分程序。
端口是虚拟的概念,并不是说主机上真的由65536个端口。
16为二进制整数,2个字节,对应十进制的0-65535
TCP协议和UDP协议都各有65536个端口

  • 公认端口:0-1023
  • 注册端口:1024 - 49151 用户进程或应用程序
  • 动态/私有端口 49152 - 65535

URL:
URL(Uniform Resource Locator),统一资源定位符,一种定位资源的注意访问机制的字符串,一个标准的URL必须包含:
protocol协议、host、port、path、parameter参数、anchor锚
URN:统一资源名称,通过特定命名空间中的唯一名称或ID来标识资源 - 一般用于资源下载时的磁力等


传输协议

TCP

一种面向连接的、可靠的、基于字节流的运输层通信协议
需要建立连接才能传输

特点:

  • 面向连接
  • 点到点的通信
  • 高可靠性
  • 占用系统资源多、效率低

常用:HTTP、ftp、SMTP(邮件系统)

TCP建立连接的三次握手

  1. 客户端发送一个包含SYN即同步(Synchronize)标志的TCP报文,SYN同步报文会指明客户端使用的端口以及TCP连接的初始序号
  2. 服务器收到客户端的SYN报文,将返回一个SYN+ACK的报文,表示客户端的请求被接受,同时TCP序号被加一,ACK即确认(Acknowledgement)
  3. 客户端返回一个确认报文ACK给服务端,同样TCP序列号加一,即TCP连接完成
UDP

一种无连接的传输层协议,提供面向事务的简单不可靠信息传送服务

特点:

  • 非面向连接,传输不可靠,可能丢失
  • 发送不管对方是否准备好,接收方收到也不确认
  • 可以广播发送
  • 非常简单的协议,开销小

常用:DNS、SNMP简单网络协议

套接字Socket

TCP和UDP属于传输层协议,网络开发程序位于应用层,在应用层和传输层之间,使用套接字Socket来进行分离
套接字就像是传输层为应用层开的一个小口,应用程序通过这个小口向远程发送数据,或者接收远程发来的数据;而这个小口以内,即数据进入后或出来前,数据的传输不用关心,这属于网络其他层次的工作
Socket实际是传输层供给应用层的编程接口。Socket就是应用层与传输层之间的桥梁。使用Socket编程可以开发客户端和服务器应用程序,可以在本地网络上进行通信,也可以通过Internet在全球范围内通信

Socket的作用

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值