网络概括
计算机网络:通过传输介质、通信设施和网络通信协议,把分散在不同地点的计算机设备互联起来,实现资源共享和数据传输
网络编程:编写程序代码将两个或者两个以上的设备进行数据传输
OSI参考模型
将复杂的网络问题根据功能划分到不同层次上,层与层之间通过接口连接
OSI(Open System Interconnection)开发互联参考模型,OSI将网络划分为7层:分别物理层,数据链路层,网络层,传输层,会话层、表示层和应用层
物理层:
OSI的最底层,涉及通信信道上传输的原始比特流,功能主要是为数据端设备提供传输数据的通道以及传输数据
数据链路层:
主要任务是实现计算机网络中相邻节点之间的可靠传输
把原始的,有差错的物理传输线路加上数据链路层协议以后,构成逻辑上可靠的数据链路
网络层(IP):
主要功能是建立源主机和目的主机之间可靠的网络传输,功能包括路由选择,网络寻址,流量控制,拥塞控制,网络互连
传输层(端口):
承上启下作用,涉及源节点到目的节点(端口,电脑上的应用程序)之间可靠的信息传输
传输层需要解决跨域网络连接的建立和释放,建立连接需要三次握手,释放连接需要四次挥手(TCP)
会话层:
主要功能是负责应用程序之间建立、维护和中断会话
提供设备和节点之间的会话控制,协调系统和服务系统之间的交流
通过提供全双工、半双工的通信方法,使系统和服务之间有序进行通信
表示层:
关心所传输信息的格式定义,主要功能是把应用层提供的信息变换为能够理解的形式,提供字符编码、数据格式、控制信息格式、加密等的统一表示
应用层:
OSI模型最高层,直接为应用进程提供服务
作用是实现多个系统应用进程之间相互通信,完成一系列业务处理所需要的服务
TCP/IP协议族
TCP/IP协议是一个开放的网络协议族,名字主要来源于网络层的IP协议和传输层的TCP协议
定义了电子设备如何接入英特网,以及数据如何在他们之间进行传输的标准
TCP/IP协议分层结构:网络接口层,网际层,传输层,应用层
网络接口层:
TCP/IP协议族中没有给出具体的描述,参考OSI模型中的物理层和数据链路层
网际层IP:
整个TCP/IP协议族的核心,功能是把分组发送给目标网络和主机
传输层TCP:
负责应用进程之间建立端到端的连接和可靠通信,存在于端口节点中
传输层涉及两个主要协议:TCP和UDP
其中TCP是面向有连接的服务,提供了数据的有序可靠传输,实现连接管理、差错控制、流量控制、拥塞控制等
UDP是面向无连接的服务,连接是不可靠的
应用层:
为互联网提供各种网络应用提供服务
各层协议简介
应用层:
协议:FTP、HTTP、SMTP
FTP(File Transer Protocol)文件传输协议<端口号:21>,减少或消除不同操作系统下处理文件的不兼容性
HTTP(Hypertext Transer Protocol)超文本传输协议<端口号:80>,面向事物的应用层协议
SMTP(Simple Mail Transer Protocol)简单邮件传输协议<端口号:25>,用于发送邮件
传输层:
TCP(Teansmission Control Protocol)传输控制协议,提供可靠的面向连接的服务,传输数据前须先建立连接,结束后释放。可靠的全双工信道。可靠、有序、无丢失、不重复。
UDP(User Datagram Protocol)用户数据报协议,发送数据前无需建立连接。不使用拥塞控制,不保证可靠交付,最大努力交付。
网络层:
IP(IPv4 IPv6)(Internet Protocol)网络之间互连的协议
ARP(Address Resolution Protocol)地址解析协议,实现通过IP地址得知其物理地址MAC
RARP(Reverse Address Resolution Protocol)反向地址转换协议,允许局域网的物理机器从网关服务器的ARP表或者缓存上强求其IP地址
ICMP(Internet Control Message Protocol)Internet控制报文协议。是TCP/IP协议族的一个子协议,用于在IP主机、路由器之间传递控制信息。
数据链路层:
没有相关协议
数据包
包,帧,数据包,段,消息
以上5个术语都是用来表述数据的单位,大致区分如下:
- 包是一个全能型术语
- 帧用于表示数据链路层的包的单位
- 数据包是IP和UDP等网络层以上的分层中包的单位
- 段则表示的是TCP数据流中的信息
- 消息是指应用协议中数据的单位
每个分层中,都会对发送的数据添加一个首部,在这个首部中包含该层必要的信息,如发送的目的地址以及协议相关的信息,通常:为协议提供的信息为首部,所要发送的内容为数据,在下一层的角度看,从上一层收到的包都认为是本层的数据
数据包首部:
网络中传输的数据由两部分构成,一部分是协议所要用到的首部,另一部分是上一层传过来的数据。首部的结构由协议的具体规范详细定义,在数据包的首部,明确标明协议应用该如何读取数据,看到首部,也就能够了解协议必要的信息以及需要处理的数据
数据的处理流程:
以用户a向用户b发送邮件为例说明: