为了开发一个CS架构或者BS架构的软件
客户端/服务器架构
1.硬件C/S架构(打印机)
2.软件C/S架构
互联网中处处是C/S架构
如百度网站是服务端,你的浏览器是客户端(B/S架构也是C/S架构的一种)
腾讯作为服务端为你提供视频,你得下个腾讯视频客户端才能看它的视频)
C/S架构与套接字(socket)的关系:
学习套接字编程的目的式为了开发一个C/S或者B/S架构的软件
client --------------网络-------------- server
browser--------------网络--------------server
网络 = 物理连接设备 + 互联网通信协议(就是计算机界的统一语言)
网络:信息高速公路
为了方便数据传输
1、物理层
物理层由来:孤立的计算机之间要想一起玩,就必须接入internet,言外之意就是计算机之间必须完成组网
物理层功能:主要负责发送电信号,用高低电平模拟二进制数0101,高电平对应数字1,低电平对应数字0
网线:--》1001000电信号--》从网线中传输电信号
8个比特位是一个字节
2、数据链路层
数据帧:一组电信号是一个数据帧,有头和数据部分
以太网协议Ethernet:要求连入网络的计算机必要要有一块网卡,并且规定全球每一块网卡的mac地址都不一样,用12位十六进制数表示,前六位表示生产厂商,后六位表示流水线号
以太网协议的数据传输部分分为报头和数据部分,报头有18个字节组成,前6个字节为自己的mac地址,中间6个字节是对方mac地址,后6个字节表示数据类型
网卡--》mac地址--》全球唯一的--》网卡出厂少在了网卡上。
48位二进制--》看到的都是16进制表示
广播:
局域网内通信,所有人都会接收到,通过mac地址确定给谁的数据报,如果不是自己的就不处理
广播风暴
3、网络层
跨局域网通信,需要经过网络层
网络层的由来:必须找出一种方法来区分哪些计算机属于同一广播域,哪些不是,如果是就采用广播的方式发送,如果不是,就采用路由的方式(向不同广播域/子网分发数据包),mac地址是无法区分的,它只跟厂商有关
IP地址:0.0.0.0 - 255.255.255.255
子网掩码:配合IP地址进行二进制的与运算,算出两个IP地址是否属于同一个局域网
ARP协议:ip和mac的对照表,负责把ip解析成mac地址
4、传输层
传输层的由来:网络层的ip帮我们区分子网,以太网层的mac帮我们找到主机,然后大家使用的都是应用程序,你的电脑上可能同时开启qq,暴风影音,等多个应用程序,那么我们通过ip和mac找到了一台特定的主机,如何标识这台主机上的应用程序,答案就是端口,端口即应用程序与网卡关联的编号。
传输层功能:建立端口到端口的通信
端口:0 - 65535 一个应用程序可以监听多个端口,但是一个端口只能属于一个应用程序
TCP协议:可靠传输
UDP协议:不可靠传输
5、应用层
http,ftp,websocket...
应用程序 | FTP | TFTP | TELNET | SMTP | DNS | HTTP | SSH | MYSQL |
---|---|---|---|---|---|---|---|---|
熟知端口 | 21,20 | 69 | 23 | 25 | 53 | 80 | 22 | 3306 |
传输层协议 | TCP | UDP | TCP | TCP | UDP | TCP | TCP | TCP |
DNS:把网址转换成IP地址
从浏览器发送出去的数据,都是http协议,默认都是80端口
1、tcp可靠传输:三次握手,四次回收保证数据可靠
2、三次握手
客户端想服务端发送链接请求
服务端回复可以建立,并且带着跟客户端建立连接的数据包
客户端收到后,链接建好了
3、这个过程后就剋有可靠传输数据
4、断开链接(4次挥手)
客户端告诉服务端,要断开
服务端收到,回复ok
服务端可能还有数据在传递,暂时还没断开,要等数据传完
服务端告诉客户端,我要断开链接
客户端收到,回复ok
1、Socket抽象层,从osi七层抽象出去的,抽象了网络层和传输层,跟语言无关,任何语言都会有socket的封装
2、专门给开发人员用的
1、目标主机在局域网内
2、目标主机不在局域网内
ip的作用有二:
1、arp歇一会根据ip地址解析成mac地址
2、ip+子网掩码按照位与运算会得到网络地址,以此来判断源于模板是否在一个局域网内
1、根据自己的ip与子网掩码计算出自己的网络地址
2、根据对方的ip与子网掩码计算出对方的网络地址
3、判断1和2的网络地址是否一样
3.1、如果一样,证明源地址和目标地址在一个局域网内,只需要走交换机即可
发arp协议的广播包->拿到目标主机的mac地址
(自己的mac FF-FF-FF-FF-FF-FF) (自己的ip地址 对方的ip地址) 数据部分
发送真实的数据包
(自己的mac地址 目标主机的mac地址)(自己的ip地址 对方的ip地址) 数据部分
3.2、如果不一样,证明源与目标不在同一个局域网内,需要走交换机,再发给路由器,路由器再转发给运营商的环境
发arp协议的广播包-》拿到网关的mac地址
自己的mac FF-FF-FF-FF-FF-FF 自己的ip地址 网关的ip地址 数据部分
发送真实的数据包
自己的mac 网关的mac地址 自己的ip地址 对方的ip地址 源端口 目标端口 数据部分
1、目标mac为FF-FF-FF-FF-FF-FF
2、目标mac地址不在mac地址表中
原文:https://www.cnblogs.com/BaiJiaZhengMing/p/14858234.html