计算机网络概况
阿里云国内75折 回扣 微信号:monov8 |
阿里云国际,腾讯云国际,低至75折。AWS 93折 免费开户实名账号 代冲值 优惠多多 微信号:monov8 飞机:@monov6 |
1 前言
计算机网络是指将位于不同地理位置但具有独立功能的多台设备通过通信设备和线路连接起来在网络操作系统网络管理软件、网络通信协议的协调管理下实现资源共享和信息传递的计算机系统。
简单来说计算机网络就是用于满足不同机器之间通信、共享的一种系统。
1.1 计算机网络的组成
从组成上而言计算机网络主要由主机、协议、传输介质以及软件四部分组成。
主机可以是手机、电脑、服务器、电子手表等任意计算机硬件。
协议各类定义归法的网络通信协议如TCP/IP、IPX/SPX、AppleTalk等。
传输介质传输数据的通道可以是实体铜线、电缆、光纤也可以是无形的电磁波空间介质。
软件涵盖所有联网的应用如QQ、微信、支付宝、淘宝、京东等各类软件。
1.2计算机网络的功能组成
计算机网络体系的两个核心功能
资源共享资源子网实现-->OSI中的上三层
数据通信通信子网实现-->OSI中的下三层
1.3 网络分层与OSI七层模型
而在计算机网络中当两台机器进行通信时其过程主要包含数据的封装与解封
如上图左侧是发送端右侧是接收端当发送端的应用尝试传输一条数据时数据会根据网络分层结构从上至下依次封装每层都对数据做一定的处理最后在物理层转换为比特流二进制数据然后传输至接收端。因为双方之间遵守的都是相同的协议体系网络模型因此接收端会首先接收到比特流数据然后从下至上依次解封数据最终在应用层还原数据从而达到通信的目的。
2 通信协议的基本概念
2.1 协议数据单元(PDU)
计算机网络体系中不同节点通信时交换的信息报文称PDU=协议头信息 + 数据
2.2 TCP/IP体系中数据的通信过程
TCP/IP体系中一端要想为另一端发送信息数据也会经历封装与解封过程每一次封装都会形成本层的PDU.
同比生活也就是类似收发快递的过程
发件[发件人]→[货物]→[驿站]→[快递公司站点]
传输介质[运输路线]→[中转站]
收件[快递公司站点]→[驿站]→[货物]→[收件人]
3 TCP/IP协议简介
源端口/目的端口指数据发送方的应用进程端口号和接收方的端口号
序号TCP为了保证数据的可靠传输会对分段数据标注序号用于组装和确定数据的正确性
确认序号当接收方收到接收到本次数据时下次需要发送的数据段序号。
首部表示TCP报文头的长度因为TCP头长度可变性因此需要在头信息中声明每个头的长度
保留位预留一些空间给未来拓展时使用。
URG表示本次发送的报文数据中是否是紧急数据。
ACK确认信号当报文中ACK=1的时候表示正确或同意。
PSH表示接收方应该尽快将这个报文交给应用层为后续数据腾出空间不要停留在缓冲区。
RST如果收到RST=1的报文说明与主机的连接出现严重错误如主机崩溃必须释放连接然后重新建立连接。
SYN建立一个新连接SYN=1表示这是一个请求建立连接的报文段。
FIN断开一个连接FIN=1表示通知告知对方本段要关闭连接了。
3.1连接管理机制 - 三次握手与四次挥手
TCP的三次握手
所谓的TCP三次握手其实是指TCP建立连接的过程因为TCP属于可靠性的传输协议因此在发送数据前必须要先确保发送/接收数据的双方状态正常因此需要经过“三次握手”的过程具体如下
客户端向服务端发送建立连接的数据包SYN=1,seq=x然后进入syn-send等待确认连接状态
SYN=1代表请求建立连接。
seq=x当前数据包的序号。
服务端接收到请求建立连接的数据包后允许建立连接的情况下会返回响应报文
SYN=1,ACK=1,seq=y,ack=x+1
SYN=1TCP是双全工协议因此服务端也需向客户端发送SYN=1信号。
ACK=1确认客户端建立连接的请求。
seq=y表示当前服务端返回给客户端的序号。
ack=x+1确认客户端序号x之前的请求都已收到。
因为是双全工协议连接是双向的因此客户端也需确认一下服务端的连接请求收到服务端的SYN=1后也需返回ACK=1,seq=x+1,ack=y+1的数据包。
ACK=1表示确认服务端的连接建立请求。
seq=x+1当前数据包的请求序号。
ack=y+1确认服务端序号y之前的数据都已成功接收。
经过如上三个步骤客户端和服务端双方之间确认请求后连接会成功建立紧接着双方都会处于estab-lishen状态数据可以正常传输。
TCP的四次挥手
当一方数据传输完成后会尝试中断连接因此又会经历“四次挥手”的过程如下
①客户端完成数据传输后会发出FIN=1,seq=u关闭连接的报文然后等待服务端响应。
FIN=1代表请求关闭连接。
seq=u请求序号。
②服务端收到客户端的“关闭”请求后会给客户端返回确认关闭的报文ACK=1,seq=v,ack=u+1。
ACK=1确认客户端“关闭连接”的请求。
seq=v请求序号。
ack=u+1确认客户端序号u及其以前的数据都已成功接收。
客户端传输完成数据后会告诉服务端自己要关闭连接了
但服务端可能数据还未传输完成因此会继续传输自己的数据直至自身的数据也传输完成后也会告诉客户端自己也要关闭连接了。
③服务端传输完成自己的数据后向客户端发送关闭连接的报文FIN=1,ACK=1,seq=w,ack=u+1。
FIN=1表示自己也要“关闭连接”了。
ACK=1确认收到了之前的数据。
seq=w请求序号。
ack=u+1确认客户端序号u之前的数据都已成功接收。
④客户端接收到服务端“关闭连接”的请求后给服务端响应确认报文ACK=1,seq=u+1,ack=w+1。
ACK=1确认服务端“关闭连接”的请求。
seq=u+1请求序号。
ack=w+1确认服务端序号w之前的数据都已成功接收。
学习链接 https://juejin.cn/post/7101917676162777119