认识TCP/IP协议和互联网协议群----三次握手和四次挥手

本文详细介绍了TCP/IP协议的概念模型,它简化了OSI七层模型,将应用、表示和会话层合并。重点讨论了传输层的TCP协议,包括端口号的作用和TCP/IP连接的建立过程,即著名的三次握手。此外,还阐述了数据顺序处理、断开连接的四次挥手过程,以及TCP如何保证数据的可靠传输。
摘要由CSDN通过智能技术生成

类似OSI模型,一种网络协议的概念模型,多多少少受到了IOS七层协议的影响,在TCP/IP中因为觉得应用层、表示层、会话层三个层次提供的服务相差不是很大,使用就把它们合为一层,但是由于运输层和网络层在网络协议中的地位十分重要,所以在TCP/IP协议中它们被作为独立的两个层次。

TCP/IP不只是两个协议,而是一整个协议群,是指能够在多个不同网络间实现信息传输的协议簇


应用层(http协议)->传输层(TCP/UDP协议)->网络层(IP协议)->链路层(多种底层网络协议Ethernet,WiFi...)->物理层,

 

传输层
提供主机到主机通信,要给出端口号,获取是什么应用
80 http协议
网络层
地址到地址通信
链路层
设备到设备通信 要提供mac地址(局域网)

其他层同ISO层一样

重要标识
端口号:在一个主机里辨识应用的就是我们的端口号
8080一般给java应用的
mac编号:设备出厂的就有的
mac 身份证
端口号 地址

TCP/IP封包
应用层 数据 用户自己定义的格式,通常换一种格式,数据转换,
传输层 TCP Header,TCP数据 这里会加上一些头部,写上一些该数据的信息,最重要的就是原端口号,和目的端口号,应用到应用
网咯层 IP Header,IP数据 头部放地址,原地址,目标地址,协议,这里数据区别上一层,这里会切成更小的片段,segment
链路层 Frame Header,Frame Data,Frame Footer 这里加了头还加了尾 为了保护数据的,在两个设备间传输,区分一块一块数据,

建立TCP/IP连接为什么要3次握手

TCP/IP为了保证数据在传输的时候不会两端跑丢一端,但是因为计算机上下文较为简单,所以说,通过三次握手来保证服务端和客户端在线。

异常情况
当消息发出没有收到反馈,那么就会被认定为1消息发出失败,那么就会重新发送消息
在这些,我们人与人交往有很多的猜测,共识,在计算机里称为上下文,context,机器的上下文是很少的,理解能力有限。

 

情景在线

我要和bob聊天,询问明天怎么安排

1.我先发送一个在吗,询问bob是不是在线上,

2.当bob收到我的信息和我说在的,

3.当我收到他说他在,也许我们就已经可以发送该要的内容了,因为我们有非常复杂的上下文去判断这个情况,但是计算机的上下文非常简单,所以他无法确定我是否还在线,所以我在这个时候发一个消息保证自己也在线,

4. 就可以开始说事情了

TCP/IP的三次握手

  1. 客户端 调用connect()的方法,可能java 可能c,这个时候,客户端进入一个SYN_SEND的状态(SYN 相当于Synchronous,同步发送的一个状态),发送的消息就是SYN,我们开始同步把(请求同步),
  2. 服务端监听到这个请求listen(),就会进入同步监听的一个状态SYN-RECEIVED,也就是监听到你的消息,发出SYN-ACK(我已经确认收到你同步的信息)ACK Acknowledge 确认收到
  3. 客户端 收到就会认为自己已经处于一个连接状态ESTABLSHED,虽然说已经处于连接状态,但是还是会给服务端发送确认收到
    4.服务端收到这条,进入连接状态ESTABLISHED 开始交换数据
    在这个握手中,如果多次信息发出未回,就会认为网络断开,如果想继续该操作就重新进行,如果第一次没回,第二次回了,那就会认为网络波动,这其中的上下文。
    保证数据的可靠,

数据顺序处理

数据顺序问题
我们给出消息,给出多个消息,同时对方给出多个回答,首先不知道的就是对方消息对应的答案,其次不知道消息发出到对面先后顺序。
解决数据顺序
给数据加编号 如何加上这个信号,假如,这边发出信号1,2,对方看到就会回3,如果这个时候这边在发一个,也会是3。
加市时间戳,但是两个服务端会有时间差,

所以我们写前端不要以浏览器时间为基准,每个用户浏览器时间是不一样的,

确定一个消息顺序:绝对时间
无法得到绝对时间;

TCP/IP协议的处理方法
消息的绝对顺序用(SEQ,ACK)这一对元组描述
SEQ(Sequence):这个消息发送前一共发送多少字节,之前说了多少话
ACK(Acknowledge):这个消息发送前一共收到多少字节,之前收了多少话;
数学在计算机的应用,这两个就是不变量。
发一个数据会有一个返回,这是必定的,
服务端会有一个时间窗口,缓冲区,会将一段时间内消息缓冲进来,也就是说允许一段时间内的可以乱序。

断开连接

 

四次挥手

  1. 发起者发一个FIN,把事情处理完发送一个finishes,然后对方返回一个ACK告诉客户端我已经知道了
  2. 接收者返回ACK,处理完所有事情,发送一个FIN。
  3. 发起者收到FIN,发一个ACK来确认服务端所有的事情已经完成。
  4. 就断开连接。

总结

在这里可以看出TCP/IP把原本的模型间省略成了4层结构,用最高化原则:没有足够的事情做,就不必分层。

思考了TCP/IP为什么要3次握手,思考了计算机对话和人对话的区别

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值