C/S架构,osi五层协议,TCP的三次握手与四次挥手

1.C/S B/S架构

C:client   客户端
B:Browser  浏览器
S:server  服务端
C/S 客户端与服务器之间的架构:QQ,微信,游戏,App的都属于C/S架构
优点:安全性高,个性化设置,功能全面,响应速度快
缺点:开发成本高,维护成本高,面向的客户固定
B/S 浏览器与服务器之间的架构:属于C/S架构,最近几年比较流行的特殊的C/S架构
优点:开发维护成本低,面向用户广泛
缺点:安全性相对低,响应速度相对慢,个性化的设置单一

2.互联网通信的原理

1.物理连接介质将两台电脑连接起来
2.通过统一的通信标准(互联网协议),实现通信

3.osi 五层协议

数据: '今天上课,别迟到'
应用层:数据size, md5这两个参数作为报头head
 data = {'size': 22, 'md5': 'e4rrewr345345643' ,'content': '今天上课,别迟到'}
传输层: 端口协议  封装了端口,确定软件在计算机的位置
tcp(端口号: 9000) |data = {'size': 22, 'md5': 'e4rrewr345345643' ,'content': '今天上课,别迟到'}
网络层: ip协议
IP协议(源ip地址, 目标ip地址)|tcp(端口号: 9000) |data = {'size': 22, 'md5': 'e4rrewr345345643' ,'content': '今天上课,别迟到'}
数据链路层: 以太网协议
以太网协议(源mac地址,目标mac地址 数据类型)|IP协议(源ip地址, 目标ip地址)|tcp(端口号: 9000) |data = {'size': 22, 'md5': 'e4rrewr345345643' ,'content': '今天上课,别迟到'}
=>
物理层 ---> 数据链路层(以太网协议(mac地址)) ----> 网络层(IP协议) ----> 传输层(端口协议(TCP,UDP协议)) ---> 应用层
物理层
一系列的物理连接介质,网线、光纤、电缆等
发送的数据就是八位二进制比特数据流,这些数据不断地收发(数据要进行分组,物理层无法实现)
数据链路层
数据链路层:以太网协议,是按照一定的协议对比特流数据进行分组
一组电信号构成一个数据报,叫做"帧"
每一数据帧分成:报头head和数据data两部分 => 数据头|数据
    数据头:固定长度18个字节 => 源地址,目的地址,数据类型
    数据:46字节<=data<=1500字节
为什么数据头要固定?
    固定就是一个统一标准,为了提取源地址以及目标地址
以太网协议中源目标地址如何设置唯一?
    网线直接接触的硬件就是网卡,网卡上有一个地址(mac地址),确定计算机的唯一性的物理地址(12位 16进制组成的一串数字:前6位 厂商编号   后6位 流水线号)

广播:计算机最原始的通信方式
数据的分组(原地址+目标地址)+广播:理论上计算机可以通信,但是每台计算机都要接收广播的消息,查看是否是给自己的数据,效率极低
所以,广播是有范围的,在同一子网、局域网内是通过广播的方式发消息
数据经过以太网协议封装后,先要从局域网内进行广播,每次发消息,每次都要广播,这样效率也是很低的  =>  数据给交换机,交换机再分发出去
交换机对照(网口与MAC地址的)表:
1:    1C-1B-0D-DA-E8-8F
2:    FF-FF-FF-FF-FF-FF
3:    FF-FF-FF-FF-FF-FF
4:    FF-FF-FF-FF-FF-FF
5:    FF-FF-FF-FF-FF-FF   =>    1C-1B-0F-4A-E8-8F
网口1出来一条信息,第一次广播的形式发出去:
源地址: 1C-1B-0D-DA-E8-8F 目标地址: 1C-1B-0F-4A-E8-8F  |   data
=>    2,3,4,5口接收到此消息,查看目标mac地址是否是自己的,5口确定是自己的,则mac地址转变成上述目的地址
每个网口都广播发送消息一遍之后,对照表就构建好,下次在任意的网口在发消息,就直接以单播的形式发送
目的: 避免局域网内每一次都广播的形式通信.以后就可以单播,提升效率

两个用户进行第一次通信的时候,你不可能知道对象的mac地址,但是你必须要知道对方的IP地址
=>  ARP协议:就是通过对方的ip地址获取到对方的MAC地址
=>  IP + ARP协议 获取对方的MAC地址
网络层
IP协议:确定对方局域网的位置
广播,mac地址,ip => 可以找到世界上任意一台计算机
ip协议:ip地址+子网掩码确定计算机所在网段,子网,局域网的位置
ipV4地址:四点分十进制  取值范围:0-255,0-255,0-255,0-255
子网掩码:一般都是C类   255.255.255.0
ip地址+子网掩码如何确定局域网的位置?
一个ip:   172.16.10.1  : 10101100.00010000.00001010.00000001
子网掩码: 255.255.255.0 : 11111111.11111111.11111111.00000000     # 都是1返回1,有0返回0
      网段,子网,局域网:   172.16.10.0
另一个ip: 172.16.10.2:  10101100.00010000.00001010.00000010
子网掩码: 255.255.255.0  11111111.11111111.11111111.00000000
       网段,子网,局域网:  172.16.10.0
=>  通过iP地址与子网掩码可以确定对方计算机是否和自己的计算机在同一子网

一般情况下:,C类子网掩码,一个局域网能承载多少计算机?
C类子网掩码可以分配254个ip地址(1-254),同一个局域网内的ip地址不能重复,也就是可以连接254台计算机

路由器: 1.虚拟分配ip地址(DHCP协议)  =>  内网
       2.网关  连接外网
       3.计算最优路径
![%X83(3RR75PSA{BNV%}QVNE](C:\Users\87348\Desktop\%X83(3RR75PSA{BNV%}QVNE.jpg)
传输层
计算机的通信:计算机的软件与服务器的软件进行的通信(端口协议)
端口: 0~65535端口号
1~1023:系统占用的端口号
1024~8000之内:一般的是由软件占用
广播,mac地址,ip,端口 => 可以找到世界上任意一台计算机对应的软件
应用层
软件自己定义的协议
将数据按照自定义的协议进行分装  http FTP协议

4.TCP的三次握手与四次挥手

客户端与服务端第一次建立通信联系,需要三次"握手"
client  => syn=1 seq=x =>  server
client  <= ack=x+1 syn=1 seq=y <=  server
client  =>  ack=y+1  =>  server
建立的连接不能一直连接着
TCP:好人协议,不会拒绝别人
syn洪水攻击:黑客会虚拟很多的假IP,然后访问你的服务器  =>  半数据池,缓存效果

客户端与服务端切断通信联系四次挥手
client  => fin=1 seq=x =>  server
client  <= ack=x+1  <=  server
client  <= fin=1 seq=y  <=  server
client  =>  ack=y+1  =>  server

5.udp与tcp

tcp协议
优点:好人协议,流式协议,稳定,安全
缺点:效率低
应用:Web浏览器,文件传输等
udp协议:
优点:效率高,传输快
缺点:不安全,不是面向连接的,不可靠
应用:域名系统(DNS),视频流,IP语音(VoIP),微信qq

原文地址:https://www.cnblogs.com/wxl1025/p/11196450.html

时间: 2024-10-07 04:50:01

C/S架构,osi五层协议,TCP的三次握手与四次挥手的相关文章

TCP协议中的三次握手和四次挥手(图解)【转】

建立TCP需要三次握手才能建立,而断开连接则需要四次握手.整个过程如下图所示: 先来看看如何建立连接的. [更新于2017.01.04 ]该部分内容配图有误,请大家见谅,正确的配图如下,错误配图也不删了,大家可以比较下,对比理解效果更好.这么久才来更新,抱歉!! 错误配图如下: 首先Client端发送连接请求报文,Server段接受连接后回复ACK报文,并为这次连接分配资源.Client端接收到ACK报文后也向Server段发生ACK报文,并分配资源,这样TCP连接就建立了. 那如何断开连接呢?

TCP/IP之TCP协议首部、三次握手、四次挥手、FSM

TCP包头 <--------------------------------32 位------------------------------> 0 8 16 24 32 |----------------|----------------|----------------|----------------| ----- | Source port | Destination port | | |-----------------------------------------------

TCP的三次握手与四次挥手

最近在看一些Tcp网络编程方面的内容,不免涉及客户端和服务器交互的内容,其中最经典的应该是TCP的三次握手和四次挥手了. 背景描述 通过上一篇中网络模型中的IP层的介绍,我们知道网络层,可以实现两个主机之间的通信.但是这并不具体,因为,真正进行通信的实体是在主机中的进程,是一个主机中的一个进程与另外一个主机中的一个进程在交换数据.IP协议虽然能把数据报文送到目的主机,但是并没有交付给主机的具体应用进程.而端到端的通信才应该是应用进程之间的通信. UDP,在传送数据前不需要先建立连接,远地的主机在

揭秘——TCP的三次握手和四次挥手

1.前言 本文以博主在某次前端面试中被问到"什么是TCP协议中的三次握手和四次挥手?"为契机,经过整理教材.百度百科以及他人博客,再结合博主自身的理解,尽可能的以通俗易懂的语言来解释TCP协议中的三次握手和四次挥手的具体过程. 2.TCP连接和断开 客户端与服务端在建立TCP连接时需要经过三次握手才能建立,而断开连接则需要四次挥手.整个过程全览如下图所示: 我知道,直接看此图,相信大多数伙伴是懵逼的,下面我们就分别从建立连接和断开连接进行详细介绍. 3."三次握手"

TCP/IP三次握手与四次挥手的正确姿势

A 理解TCP/IP三次握手与四次挥手的正确姿势https://www.cnblogs.com/lms0755/p/9053119.html B 四次挥手过程理解 https://blog.csdn.net/qq_38950316/article/details/81087809 C TCP三次握手四次挥手详解http://www.cnblogs.com/zmlctt/p/3690998.html 原文地址:https://www.cnblogs.com/kelelipeng/p/1021678

tcp协议报文和三次握手与四次挥手

tcp协议: tcp是面向连接.可靠的进程到进程之间的协议.tcp提供全双工服务:即:数据可在同一时间双向传输. tcp报文段首部格式: 各字段含义: 源端口号:16位字段,为发送端进程对应的端口号 目标端口:16位字段,为接收端进程对应的端口号,接收方接收到数据包之后根据这个字段确定将数据发送给对应程序来处理 序号:32位字段,当tcp从进程中接收到数据之后,就会把他存储在发送缓存中.并对每一个字节进行编号,形成的序列号.特点如下: 会生成一个随机数作为第一个字节的编号,成为序列号(ISN),

TCP/IP协议全解析 三次握手与四次挥手[转]

所谓三次握手(Three-Way Handshake)即建立TCP连接,就是指建立一个TCP连接时,需要客户端和服务端总共发送3个包以确认连接的建立.所谓四次挥手(Four-Way Wavehand)即终止TCP连接,就是指断开一个TCP连接时,需要客户端和服务端总共发送4个包以确认连接的断开. AD:51CTO网+ 首届中国APP创新评选大赛火热招募中…… 一.TCP报文格式 TCP/IP协议的详细信息参看<TCP/IP协议详解>三卷本.下面是TCP报文格式图: 图1 TCP报文格式 上图中

TCP/IP三次握手与四次挥手(转)

一.TCP报文格式        TCP/IP协议的详细信息参看<TCP/IP协议详解>三卷本.下面是TCP报文格式图: 图1 TCP报文格式 上图中有几个字段需要重点介绍下:        (1)序号:Seq序号,占32位,用来标识从TCP源端向目的端发送的字节流,发起方发送数据时对此进行标记.        (2)确认序号:Ack序号,占32位,只有ACK标志位为1时,确认序号字段才有效,Ack=Seq+1.        (3)标志位:共6个,即URG.ACK.PSH.RST.SYN.F

(转)TCP/IP三次握手与四次挥手

一.TCP报文格式 TCP/IP协议的详细信息参看<TCP/IP协议详解>三卷本.下面是TCP报文格式图: 图1 TCP报文格式 上图中有几个字段需要重点介绍下: (1)序号:Seq序号,占32位,用来标识从TCP源端向目的端发送的字节流,发起方发送数据时对此进行标记. (2)确认序号:Ack序号,占32位,只有ACK标志位为1时,确认序号字段才有效,Ack=Seq+1. (3)标志位:共6个,即URG.ACK.PSH.RST.SYN.FIN等,具体含义如下: (A)URG:紧急指针(urge