七层划分为:物理层、数据链路层、网络层、传输层、会话层、表示层、应用层
物理层:
物理传输、硬件、物理特性,计算机与计算机通信,必须有底层物理层方面的连通。需要插网线 连接路由器
中间物理连接可以是光缆、电缆、双绞线、无线电波,中间传的是电信号,
010101……这些二进制,通过数据链路层来让这些二进制位变得有意义
数据链路层:
早期的时候,数据链路层是对电信号做分组的,以前每个公司都有自己的分组方式,非常乱 后来形成了统一的标准(标准就是协议),即以太网协议Ethernte
Ethernte规定:
每一数据帧分成:报头head和数据data两个。
Head包含:(固定18个·字节)
发送者,(源地址,6个字节)
接收者,(目标地址,6个字节)
数据类型(6个字节)
Data包含:(最短46字节,最长1500字节)
数据包的具体内容
Head长度+data长度=最短64字节,最长1518字节,超过最大限制就分片
计算机通信中的源地址和目标地址指的是Mac地址
Mac地址的由来:
Ethernte规定接入internet的设备必须有网卡,发送端和接收端的地
址便是网卡的地址,即Mac地址
对数据进行处理封装成数据帧并传递和数据检测的层 就是数据链路层
网络层:
网络层定义了一个IP地址
Mac地址标识你的位置,IP地址标识你在哪个局域网
传输层:
我们通过IP地址和Mac地址找到了一台特定的主机,电脑上可能同时开启了多个应用程序,如何标识这台主机上的应用程序,就是端口
传输层功能:建立端口到端口的通讯
有两种传输方式:可靠传输和不可靠传输
可靠传输
TCP协议 (Transmission Control Protocol,传输控制协议)在收发数据前,必须要和对方建立可靠的链接,一个TCP连接必须要经过三次“对话“才能建立起来,
三次“对话“的简单过程:
① 主机A向主机B发出链接请求数据包:“我想给你发数据,可 以吗?“ 这是第一次对话
② 主机B向主机A发送同意连接和要求同步(同步就是两台主机一台在发,一台在接收的,协调工作)的数据包:“可以,你什么时候发?“,这是第二次对话
③ 主机A再发出一个数据包确认主机B的同步要求:“我现在发,接着吧。“
三次“对话“的目的是使数据包的发送和接收同步,经过三次”对话“后主机
A才向主机B正式发送数据
三次握手特点:没有应用层的数据,SYN这个标志只有在TCP建立连接 时才会置1。握手完成SYN被置于0
TCP建立链接要三次握手,而断开链接要进行四次:
① 当主机A完成数据传输后,将控制位FIN置1,提出停止TCP连接
② 主机B收到FIN后对其做出响应,确认这一方向上的TCP链接将关闭,将ACK置1
③ 主机B再提出反方向的关闭请求,将FIN置1
④ 主机A对主机B的请求进行确认,将ACK置1,完成双向关闭
ACK 是TCP报头的控制位之一,对数据进行确认。确认由目的端发出
用它来告诉发送端这个序列号之前的数据段都收到了。 比如确认号为X,则
表示前X-1个数据段都收到了,只有当ACK=1时,确认号才有效,当ACK=0
时,确认号无效,这时会要求重传数据,保证数据的完整性。
FIN 发送端完成发送任务位,当TCP完成数据传输需要断开时,提出断
开的一方将FIN置于1.
SYN 同步序列号,TCP建立连接时将它置于1
由此可以看出,TCP使用面向连接的通信方式,大大提高了数据传输的
可靠性,发送数据端和接收端在数据发送前就有了交互,位数据传输打下了
可靠的基础
不可靠传输
UDP(User Data Protocol,用户数据报协议)
1. UDP 是无连接的,即发送数据之前不需要建立连接,因此减少了开销和发送数据之前的时延。
2. UDP 使用尽最大努力交付,即不保证可靠交付,因此主机不需要维持复杂的连接状态表。
3. UDP 是面向报文的。发送方的UDP对应用程序交下来的报文,在添加首部后就向下交付IP层。UDP对应用层交下来的报文,既不合并,也不拆分,而是保留这些报文的边界。因此,应用程序必须选择合适大小的报文。
4. UDP 没有拥塞控制,因此网络出现的拥塞不会使源主机的发送速率降低。很多的实时应用(如IP电话、实时视频会议等)要去源主机以恒定的速率发送数据,并且允许在网络发生拥塞时丢失一些数据,但却不允许数据有太多的时延。UDP正好符合这种要求。
5. UDP 支持一对一、一对多、多对一和多对多的交互通信。
6. UDP 的首部开销小,只有8个字节,比TCP的20个字节的首部要短。
TCP用于可靠传输的情况, 应用于文件传输, 重要状态更新等场景;
UDP用于对高速传输和实时性要求较高的通信领域
会话层:
会话层提供的服务可使应用建立和维持会话,并能使会话获得同步。会话层使用校验点可使通信会话在通信失效时从校验点继续恢复通信。这种能力对于传送大的文库极为重要。
表示层:
表示层的主要作用之一是为异种-,以便能进行互操作。这种类型的服务之所以需要,是因为不同的计算机体系结构使用的数据表示法不同。例如:IBM主机使用EBCDIC编码,而大部分PC机使用的是ASCII码。在在这种情况下,便需要表示层来完成这种转换。
应用层:
应用层包含了我们通常要使用的协议,如HTTP(Hyper text TransferProtocol)协议:超文本传输协议,使用TCP的80端口;FTP(File TransferProtocol)文件传输协议;SMTP(Simple Mail TransferProtocol)简单邮件传输协议,TCP的25端口,用于发邮件;POP3(Post Office ProtocolVersion 3)邮局协议版本3,TCP的110号端口,用于收邮件;DNS(Domain Name System)域名解析协议。使用TCP和UDP的53号端口,作用是把www的域名解析成IP地址。