计算机网络——1.网络协议-TCP三次握手

(心血来潮的更新,就不按顺序出了,哪天想更新再更新吧,毕竟没啥粉丝)

网络可谓是计算机学习中最至关重要的一环,蛋蛋后从小就接触网络,可谓深受网络福泽,网络方便了千家万户,但是他是怎么如此精准的定位我们,又能精准传输文件呢?就是通过网络协议中的传输协议,协议  顾名思义就是大家一同遵守的规则,就是因为大家都遵循,所以网络才能覆盖全球而不因为语言不通受到影响

1.iOS七层模型

是用于描述计算机网络通信过程的标准化体系结构,全球通用,旨在指导网络协议的设计,实现和互操作性,以便不同的设备能够交互

作为整个网络的基本形态,全球范围内只要身处互联网就要遵循这种形态(和别人没有区别才能和别人通信)这七层模型分别为 物数网传会表应

1.物(物理层)

网络的最底层,涉及到物理介质和电信号的传输,负责将比特流传输到电缆等网络媒体上

2.数(数据链路层)

负责在直接相连的节点间传输数据,将比特流处理成帧,处理帧的开始和结束,还负责错误检测和处理,确保数据的可靠传输(冷知识 帧是网络传输的基本单位)

3.网(网络层)

负责数据的路由和转发以及在多个网络之间的数据传输,他通过逻辑寻址将数据从源节点传输到目标节点,处理分组传输和路由选择,确保数据在网络中正确到达

4.传(传输层)

传输层提供端到端的数据传输服务,确保数据的可靠传输和有序交付,处理数据分割,流量控制,拥塞控制和错误恢复,以确保数据在网络中的高效传输

5.会(会话层)

负责建立,管理和终止会话,即通信双方的逻辑连接,他处理会话控制,同步,数据交换和故障恢复,以确保通信顺利进行

6.表(表示层)

处理数据的格式转换,加密,压缩和解压缩,以确保在不同系统间数据交换能够正确解释和处理数据,他还负责数据的语法和语义传唤

7.应(应用层)

最高层,直接面向用户的应用程序,为用户提供网络服务,应用层协议定义了应用程序和网络之间的接口

可见其非常规范,按照此顺序由室外逐渐进入室内的我们的面前,所以一次信息传输经历了

发送:应表会传网数物

接收:物数网传会表应

才传输到我们面前,那么我不禁要问除去数据的压缩解码等步骤,他是怎么传输的呢?如何在茫茫人海找到我们的呢?又是如何在数据的洪流之中保证数据的正确呢?

这就到本篇文章的重点了

2.传输协议

顾名思义,饮水思源,此协议位于七层模型中的传输层,在传输层中有两个重要的协议:TCP/UDP 协议 他们分别让传输层为我们提供了 可靠/不可靠 的协议 那么他们是怎么做的呢?

1.网络通信原理

拿我们身边最近的计算机举例,每个手机相当于一台主机,每个应用相当于一个进程,根据ip(原则上不可重复,但是实际上却是重复的,下期再讲)可以寻址将消息发送到目标主机,每个进程都有独立的端口号(在本机上严格不可重复)网络通信是根据ip+端口号(元祖)的组合实现的,这样消息就可以发送到目标主机的对应程序上,不会出现qq发消息而微信接收到消息的错误情况

2.TCP(传输控制协议)面向连接

这个标题就已经将TCP概括出来了,他是面向连接的所以他能保证数据的传输没有错误,

这是一个TCP的头部,非常复杂,每个位置的数据都拥有不同的功能

1.源端口,目的端口号:

用于网络寻址

2.序列号:

在建立连接时由计算机生成的随机数作为其初始值,通过 SYN 包传给接收端主机,每发送一次数据,就「 累加 」一次该「 数据字节数 」的大小。用于解决网络数据包乱序问题

3.确认应答号:

和序列号对应,二者配合工作,代表了下一次「期望」收到的数据的序列号,发送端收到这个确认应答以后可以认为在这个序号以前的数据都已经被正常接收。用于解决丢包问题

4.控制位:(每一位只有1bit大,所以只有1和0)

ACK:

为1时代表确认应答号有效,TCP 规定除了最初建立连接时的 SYN 包之外该位必须设置为 1

RST:

为1时代表链接出现异常必须强制断开

SYN:

为1时代表希望建立链接,并在其「序列号」的字段进行序列号初始值的设定。

FIN:

为1时表示今后不会再有数据发送,希望断开连接。当通信结束希望断开连接时,通信双方的主机之间就可以相互交换 FIN 位为 1 的 TCP 段

了解了头部格式后还是有问题 TCP协议是怎么做的呢?本文重中之重来了(我也觉得墨迹,但是得循序渐进)

三次握手

真是奇怪的名字,网络怎么会握手呢?当你看完整个过程就会觉得形象了

首先概括一下三次握手的过程:(单客户端  主动请求链接  单服务器  的情况)

客户端->服务器,1请求

服务器->客户端,1应答,2请求

客户端->服务器,2应答,链接建立(在第三步进行时就可以携带数据了)

具体就是

(服务器处于监听状态才能被动连接)另外再给大家来波提示

seq:初始序列号

ack:确认应答

链接的完整过程就是

第一次握手

起初双方均处在CLOSED状态,服务器使用listen函数切换到LISTEN状态由客户端给服务器发送数据包,SYN位被置为1,初始序列号seq为x(发送时按顺序发送,但起始数不一定为1),第一次握手请求发送后客户端切换到SYN-SEND状态【同步双方的初始序列号,握手请求

若第一步成功完成代表客户端发送能力正常服务器接收能力正常

第二次握手

由服务器给客户端发送数据包,代表回应

ACK位被置为1,代表确认序号有效,确认序号的值ack为x+1,这时服务器还要与客户端建立连接,所以SYN位也会被置为1,携带的初始序列号seq为y,此时服务器切换到SYN-RECEIVED状态【确认双方的收发能力,确认应答和握手请求

若第二步完成则代表服务器发送能力正常客户端接收正常连接此时可视为基本完成所以第三步可以携带数据

为什么前两次握手不可以携带数据

会大大降低服务器安全系数和处理能力很可能并且很容易就会被攻击

第三次握手

由客户端回应服务器,确认应答,ACK位被置为1,同时ack为y+1【确认应答,链接建立】此时也会发送seq=x+1,此时这个报文可以发送数据,如果不发送数据那么下次发送数据时的序列号是x+1,客户端进入established(已连接状态)

这就是三次握手的全部过程,随着每一步的进行,逐渐确认了双方的数据收发能力并使此对链接稳定,TCP是全双工的通信协议

单工,双工

单工只能进行数据传输

双工可以进行双向数据传输双工分为全双工半双工

半双工:虽然可以双向通信,但是同一时间只能进行一个动作

全双工通信允许数据在两个方向上同时传输,它在能力上相当于两个单工通信方式的结合。

(内容系个人整理,如有错误欢迎指正,下一期讲断开连接的四次挥手,有头有尾)

  • 10
    点赞
  • 13
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值