[网络编程之客户端/服务器架构,互联网通信协议,TCP协议]
引子
网络编程
客户端/服务器架构
互联网通信协议
互联网的本质就是一系列的网络协议
OSI七层协议
-
tcp/ip五层模型
-
客户端/服务器架构
1.硬件C/S架构(打印机)
2.软件C/S架构
互联网中处处是C/S架构
如百度网站是服务端,你的浏览器是客户端(B/S架构也是C/S架构的一种)
腾讯作为服务端为你提供视频,你得下个腾讯视频客户端才能看它的视频)
C/S架构与套接字(socket)的关系:
学习套接字编程的目的式为了开发一个C/S或者B/S架构的软件
client --------------网络-------------- server
browser-----------网络--------------server
互联网 = 物理连接介质 + 通信协议
网络通信原理
-
互联网的本质就是一系列的网络协议
然而internet为何物?
其实两台计算机之间通信与两个人打电话之间通信的原理是一样的(中国有很多地区,不同的地区有不同的方言,为了全中国人都可以听懂,大家统一讲普通话)
英语成为世界上所有人通信的统一标准,如果把计算机看成分布于世界各地的人,那么连接两台计算机之间的internet实际上就是一系列统一的标准,这些标准称之为互联网协议,互联网的本质就是一系列的协议,总称为‘互联网协议’(Internet Protocol Suite).
互联网协议的功能:定义计算机如何接入internet,以及接入internet的计算机通信的标准。
-
OSI七层协议
互联网协议按照功能不同分为osi七层或tcp/ip五层或tcp/ip四层
-
tcp/ip五层模型
我们将应用层,表示层,会话层并作应用层,从tcp/ip五层协议的角度来阐述每层的由来与功能,搞清楚了每层的主要协议就理解了整个互联网通信的原理。
首先,用户感知到的只是最上面一层应用层,自上而下每层都依赖于下一层,所以我们从最下一层开始切入,比较好理解每层都运行特定的协议,越往上越靠近用户,越往下越靠近硬件
1、物理层
物理层由来:孤立的计算机之间要想一起玩,就必须接入internet,言外之意就是计算机之间必须完成组网
物理层功能:主要负责发送电信号,用高低电平模拟二进制数0101,高电平对应数字1,低电平对应数字0
2、数据链路层
数据链路层由来:单纯的电信号0和1没有任何意义,必须规定电信号多少位一组,每组什么意思
数据链路层的功能:定义了电信号的分组方式
以太网协议Ethernet:要求连入网络的计算机必要要有一块网卡,并且规定全球每一块网卡的mac地址都不一样,用12位十六进制数表示,前六位表示生产厂商,后六位表示流水线号
以太网协议的数据传输部分分为报头和数据部分,报头有18个字节组成,前6个字节为自己的mac地址,中间6个字节是对方mac地址,后6个字节表示数据类型
以太网协议通信采用广播的方式进行通信,即计算机通信基本靠吼,一台机器想要和另外一台机器通信,同局域网内所有机器都能收到发包,其他机器收到包后会拆包查看是否是属于自己的包,如果不是则丢弃,如果是则读取数据并回应,如果世界范围的机器都采用以太网的广播方式通信将是一场灾难,这就是广播风暴
知识点:以太网协议通信只能在局域网中,不能跨局域网通信
3、网络层
网络层的由来:必须找出一种方法来区分哪些计算机属于同一广播域,哪些不是,如果是就采用广播的方式发送,如果不是,就采用路由的方式(向不同广播域/子网分发数据包),mac地址是无法区分的,它只跟厂商有关
网络层功能:引入一套新的地址用来区分不同的广播域/子网,这套地址即网络地址
IP协议:如何实现跨局域网络通信,于是乎诞生了IP协议,IP协议规定了每台计算机都有一个IP地址,广泛采用的v4版本即ipv4,它规定网络地址由32位2进制表示
IP协议通信的数据传输部分也分为报头和数据部分,报头占20-60个字节,内部包含了IP版本号、自己IP,目标IP等等数据,数据部分就是包含以太网协议中的所有内容,长度限制1500字节,超过1500字节的数据将分片发送,IP分片是没有校验机制的,所有是不可靠传输,所以在传输层的数据尽可能避免到IP层分片IP协议通信通过网关统一对外局域网进行联系
4 传输层(端口协议)
传输层的由来:网络层的ip帮我们区分子网,以太网层的mac帮我们找到主机,然后大家使用的都是应用程序,你的电脑上可能同时开启qq,暴风影音,等多个应用程序,那么我们通过ip和mac找到了一台特定的主机,如何标识这台主机上的应用程序,答案就是端口,端口即应用程序与网卡关联的编号。
传输层功能:建立端口到端口的通信
TCP/UDP协议是基于端口工作的协议
port:端口,每台计算机的端口编号由065535组成,01023为操作系统占用端口
TCP协议遵循3次握手4次挥手原则,每次传输数据需等到对方回应后才会把数据从内存中删除,是一种可靠协议
TCP协议工作原理(基于tcp通信之前必须建立一个双向通信的链接)
三次握手的三步
第一次: CLIENT----syn----->SERVER 客户端发送syn报文,并置发送序号为n
第二次: SERVER----syn,ack---->CLIENT 服务端发送syn和ack报文,并置发送序号为k,确认序号为n+1
第三次: CLIENT----ack----->SERVER 客户端发送ack报文,并置发送序号为k+1
四次挥手的四步:
第一次:Client---syn--->Server 客户端发送syn报文,并置发送序号为m
第二次:Server---ack---->Clinet 服务端发送ack报文,并置发送序号为m+1
第三次:Server---syn--->Client 服务端发送syn报文,并置发送序号为p
第四次:Client----ack----->Server 客户端发送ack报文,并置发送序号为p+1