三次握手协议:为应用程序提供可靠的通信连接

在利用TCP实现客户机与服务机的通信时,为了确保TCP连接的成功建立,采用三次握手协议。

(1)第一次握手:Client将标志位SYN置为1,随机产生一个值seq=J,并将该数据包发送给Server,Client进入SYN_SENT状态,等待Server确认。

(2)第二次握手:Server收到数据包后由标志位SYN=1知道Client请求建立连接,Server将标志位SYN和ACK都置为1,ack (number )=J+1,随机产生一个值seq=K,并将该数据包发送给Client以确认连接请求,Server进入SYN_RCVD状态。

(3)第三次握手:Client收到确认后,检查ack是否为J+1,ACK是否为1,如果正确则将标志位ACK置为1,ack=K+1,并将该数据包发送给Server,Server检查ack是否为K+1,ACK是否为1,如果正确则连接建立成功,Client和Server进入ESTABLISHED状态,完成三次握手,随后Client与Server之间可以开始传输数据了。

三次握手协议使得“序号/确认号”系统能正常工作,使得它们的序号同步,若三次握手成功,则连接创建成功,可以传送数据信息,建立的是全双工的连接。

C语言网络编程——三次握手协议相关推荐

  1. 22.1 网络编程:软件结构、网络通信协议、UDP与TCP协议、(网络编程三要素:协议、ip地址、端口号)、查看ip地址、检测网络是否连通、判断ip是否可用

    目录 网络编程 软件结构 网络通信协议 TCP/IP协议 协议分类 UDP TCP 网络编程三要素 协议 IP地址 列:查看本机ip地址 检查网络是否连通.判断ip是否可用 端口号 网络编程 软件结构 ...

  2. 网络编程 三次握手、四次挥手

    http协议 应用层.tcp协议 传输层. tcp三次握手建立连接通道,发送数据完毕,http会立即将tcp断开. http连接是一种短连接,无状态的连接,HTTP协议是建立在TCP协议之上的一种应用 ...

  3. TCP网络编程-三次握手建立连接-四次挥手断开连接

    客户端与服务器进行TCP通信连接时,要进行三次握手建立连接. 客户端与服务器进行TCP断开连接时,要进行四次挥手断开连接.

  4. Java——网络编程三要素

    * A:计算机网络* 是指将地理位置不同的具有独立功能的多台计算机及其外部设备,通过通信线路连接起来,在网络操作系统.网络管理软件及网络通信协议的管理和协调下,实现资源共享和信息传递的计算机系统.* ...

  5. 网络编程入门 TCP/IP 协议 端口 IP 软件结构

    目录 一.软件结构 二.网络通信协议 三.协议分类: 四.网络编程三要素:协议,ip,端口号 1.协议 2.IP地址 3.IP地址分类 a.IPv4 b.IPv6 4.IP常用命令 1. 查看本机IP ...

  6. Java:网络编程,网络编程三要素,TCP协议,UDP协议

    day23 网络编程 网络编程三要素: IP地址 端口号 通信协议 TCP协议 UDP协议 网络编程 1.网络:计算机网络,由在不同地理位置.不同的计算机主机,互联形成的一个计算机系统.有通讯和数据共 ...

  7. 【网络】tcp三次握手协议

    原理: http协议实例:   第一次握手: 114(client)向服务方207(server)发送Connection establish request请求(SYN): 此时随机产生的seque ...

  8. 网络协议:简析三次握手协议

    一,简析三次握手协议 首先来看我们生活中很常见的一件事: 在我们网购的时候,常常会跟客服这样聊天:我们向客服询问某件事,客服回答,然后我们断网了...过了一会儿,我们再登陆就收到了客服的回答. 这个交 ...

  9. C语言网络编程函数与相关结构汇总

    持续更新中- 服务器和客户端的一般流程 服务器端:socket()-->bind( )-->listen()-->accept()-->read()/write()---> ...

最新文章

  1. 人工智能“上位”会让程序员消失吗?
  2. 知乎高赞回答:是否有必要系统学习概率图模型?
  3. STATIC_URL/STATIC_ROOT/STATICFILES_DIRS/urls.py中的static区别
  4. 几种常用控件的使用方法
  5. 【面向对象】面向对象程序设计测试题12-设计模式测试题
  6. 今天在群里面讨论了驱动机制的学习
  7. Win11连不上网怎么办 win11连不上网的设置方法
  8. linux rm -rf 根目录,在linux 根目录rm * -rf以后怎么办?
  9. 2020 字节跳动 面经
  10. 光源发散角怎么设置_Three.js 中的光源
  11. denseNet 详解
  12. 在LaTeX中使用Python highlighting in LaTeX让python代码高亮
  13. 想以游戏纸娃娃系统专利主张暴雪的暗黑3侵权? 先过暗黑2这关!
  14. 干货| RNA质检的那些事
  15. 小猫盘onespace x3p系统常见操作
  16. C++ 中transform方法的疑惑和自己的感受
  17. Vue+Gojs实现流程图demo
  18. 流场可视化工程dlb-dynamicdr部署日志:阶段二:工程本地编译
  19. python编程技巧
  20. 基于数据库的企业内部邮件系统的设计

热门文章

  1. Flowable教程
  2. vulnhub--Leeroy:1
  3. 视频文件过长,怎样剪切长视频文件发微信朋友圈
  4. 计算机系统的用户分那几类,windows7有几种类型账户权限分别是什么
  5. python输出右对齐填充_Python中符号如何对齐和填充
  6. 橙子帮助减肥,谁都可以轻松做到 - 健康程序员,至尚生活!
  7. Linux中的lsof
  8. 如何量化企业的声誉?
  9. QUIC之UDP实现可靠传输
  10. mysql语句大全 新浪博客_经典的MYSQL语句