软件开发架构:
两个程序之间通讯的应用大致可以分为两种:
第一种是应用类程序:qq、微信、网盘、优酷这一类是属于需要安装的桌面应用
第二种是web类程序:用户只需要浏览器即可访问程序。常见的web类应用程序比如百度、知乎、CSDN等使用浏览器访问就可以直接使用。
C/S架构 即客户端与服务器架构 Client与Server
客户端:就是我们常用的程序例如qq、微信,浏览器等等
服务端:要一直运行着给别人提供服务的机器(电脑、服务器)。
B/S架构 即浏览器端与服务器端:
只需在浏览器上通过HTTP去请求服务器端相关的资源(网页资源)。
网卡上有唯一的物理地址mac cmd ipconfig/all
可以用APR地址解析协议 通过ip地址找到mac地址
局域网和广域网的区别局域网是在某一区域内的,而广域网要跨越较大的地域,那么如何来界定这个区域呢?例如,一家大型公司的总公司位于北京,而分公司遍布全国各地,如果该公司将所有的分公司都通过网络联接在一起,那么一个分公司就是一个局域网,而整个总公司网络就是一个广域网。
单播:一个人说 另一个人只能听 不能说
组播:一个人说 多个人只能听不能说
广播:所有人都可以说
TCP协议 :可靠的 面向连接的协议
TCP协议特点:数据安全,速度略低。分为客户端和服务端。
TCP协议 的三次握手和四次挥手
第一次握手:是客户端让服务器准备好资源。
第二次握手:服务端资源准备好了并且服务端问客户端资源有没有准备好。
第三次握手:客户端资源也准备好了。接下来才真正的发生数据。
真正进行3次握手的时候发送的是值。
四次挥手客户端给服务器说再见,服务器给客户端说拜拜,服务端告诉客户端我也不和你玩了,客户端说不玩就不玩。
第一次,客户端告诉服务端我不会给你发数据了,
第二次服务端告诉客户端我收到你发生的信息了,
第三次服务端给客户端发生数据说我也不给你发了,
第四次客户端给服务端说我知道了。
UDP协议:面向无连接,数据不安全,速度快。不区分客户端与服务端。
在传输数据之前不建立连接 因此速度快 但可靠性低 可能会导致数据丢失
TCP与UDP的对比
TCP–提供的是面向连接、可靠的服务。当客户和服务器彼此交换数据前,必须先在双方之间建立一个TCP连接,之后才能传输数据。TCP提供超时重发,丢弃重复数据,检验数据,流量控制等功能,保证数据能从一端传到另一端。UDP–是一个简单的不可靠的运输层协议。它只是把应用程序传给IP层的数据报发送出去,但是并不能保证它们能到达目的地。由于UDP在传输数据报前不用在客户和服务器之间建立一个连接,且没有超时重发等机制,故而传输速度很快
OSI模型
Socket
Socket英文插座,插口,套接字意思。
Socket是应用层与TCP/IP协议族通信的中间软件抽象层,它把复杂的TCP/IP协议族隐藏在Socket接口后面,对用户来说,让Socket去组织数据,以符合指定的协议。(面向对象的特点,我们只负责编写逻辑即可,不用去管TCP/IP具体的格式,Sockect会帮我们做)。
基于TCP协议的socket使用
Socket是基于tcp协议的,tcp是基于链接的,因此在通讯开始之前,一定要先建立相关的链接,才能发送数据。必须先启动服务端,然后再启动客户端去链接服务端。
基于UDP协议的socket使用
udp是无链接的,启动服务之后可以直接接受消息,不需要提前建立链接
QQ聊天
服务端: