一、网络协议
1、计算机网络
简单类说就是利用通信线路实现计算机和通信设备进行信息交互的系统;
2、网络分类
局域网(LAN):一般为几十米到及时公里
域域网(MAN):介于LAN与WAN之间
广域网(WAN):一般为几十到几千公里;
3、计算机网络体系结构
七层协议(OSI)模型:开放系统互联参考模型,国际化组织为开放式互联信息系统提供的一种功能性框架,目的是为了提供一个共同的基础的和标准的框架;
OSI采用了分层结构化技术,共分为七层:物理层、数据链路层、网络层、传输层、会话层、表示层、应用层;
TCP/IP模型:OSI模型比较复杂且学术化,实际使用的是TCP/IPO模型;共分为五层:物理层、数据链路层、网络层、传输层、应用层、(两个模型对应的关系如下图)
无论什么模型,每一层抽象层建立在低一层的服务上,并为高一层提供服务;对于PC机来说,物理层可以看成网卡,数据链路层可以看成网卡驱动程序,网络层和传输层由操作负责处理,应用层则是常用的一些应用程序(如我们自己编写的网络应用程序)
TCP/IP协议族:是internet最基本的协议,国际互联网的基础;由网络层的IP协议和传输层的TCP协议组成;协议采用五层结构,然而多数情况下它是利用IP进行通信时所必须用到的协议群的统称;也就是说它其实是个协议家族,由很多协议组成,并且实在不同的层,是互联网的基础通信架构;
IP、TCP、UDP:在上图中ip是TCP/IP中非常重要的协议,用来确定网络中的唯一一台计算机设备;
而TCP和UDP都是传输协议层的协议,传输层主要为两台主机上的应用程序提供端到端的通信;
利用TCP通信的两台主机首先要经历一个建立连接、等到连接建立以后才开始传输数据;
利用UDP通信有点类似于日常生活中的物流,UDP直接把数据发出去,不管对方是否在接收,也不管对方是否能接收,也不需要确认,属于不可靠协议;
TCP/IP网络传输中的数据:每个分层中都会对发送的数据加一个首部,首部包含该层必要信息(发送地址以及协议相关信息);所需要发送的内容为数据;
网络传输中的数据包分为两部分组成,一部分是协议所要的首部,一部分是上层传来的数据;在数据包的首部明确了应该如何读取数据;
举例:
地址和端口:
MAC地址是为物理地址,由生产时写在硬件内部的,与网络无关;
IP地址:全程叫做互联网协议地址,是互联网为每一个网络和每一台主机配置的一个唯一逻辑地址;IP地址用来识别TCP/IP协议网络中互连的主机和路由器;不受硬件限制;Ip地址分为IPv4、 IPv6。IPv4是由32位二进制数组成,通常被分为四个“8位二进制数”,可以理解为四个字节,格式为(A.B.C.D),这四个英文字母表示为0-255的十进制整数;如192.168.1.1
端口:在传输层也有这种类似于地址的概念,端口号用来识别同一台计算机中进行通信的不同程序;TCP、UDP协议报文的开通,会分别有16位二进制来存储源端口号和目标端口,所以端口的个数是2的16次方(65536)个;0表示所有端口,因此只有65535个;
综述:操作系统是通过源IP地址、目标IP地址、协议号、源端口号、目标端口号五个元素唯一性识别一个网络上的通信;
4、TCP
TCP特性:TCP是面向连接的通信协议,通过三次握手建立连接才能开始读写数据,通信王城后要拆除连接;TCP提供的是一种可靠数据流服务,数据有可能被拆分后发送,TCP支持超时重传和应答机制;
TCP三次握手:所谓三次握手是指建立一个TCP连接时需要客户端和服务器端总共发送三个包确认建立连接;在socket编程中,这一过程由客户端执行connet来触发;
为什么需要三次握手?
TCP是可靠的传输控制协议,三次握手是保证数据可靠传输又能提高传输效率的最小次数;
为了实现可靠数据传输,TCP协议通信双方必须维护一个序列号,以表示发送出去的数据包中,哪些数据是已经被对方接收的;两次握手,服务端无法知道客户端已经收到了自己的序列号;
TCP四次挥手:指断开一个TCP连接,需要发送四个包确认断开;
1、其中一个应用程序调用关闭,该TCP发送一个FIN分节,进入等待;
2、接收到这个FIN的对端被动关闭,发送确认;主动关闭端接收到确认后,进入FIN-WAIT-2终止等待状态;
3、被动关闭程序调用关闭,发送一个FIN,表示没有数据需要发送了。
4、接收到后主动关闭端发送一个ack报文,进入TIME-WAIT状态,此时未释放,经过2*MSL的时间后,主动撤销TCB后,才进入Closed。
为什么需要四次挥手?
TCP是全双工的连接,必须两段同时关闭连接,连接才算真正关闭;
如果一方已经准备关闭写,但是它还可以读另一方发送的数据;发送给FIN结束报文给对方,对方收到后,回复ACK报文;当这方也已经写完了准备关闭,发送FIN报文,对方回复ACK。两端都关闭,TCP连接正常关闭;