(C++通讯架构学习笔记):TCP三次握手、telnet,wireshark使用简介

目录

TCP连接的三次握手

telnet工具使用介绍

wireshark监控数据包

TCP断开的四次挥手

TCP连接的三次握手

  • tcp:可靠的,面向连接的协议
  • udp:不可靠的,无连接的协议
  • 只有TCP有三次握手【UDP没有】

【最大传输单元MTU】

  • MTU(Maximum Transfer Unit):最大传输单元。
  • MTU:每个数据包包含的数据最多可以有多少个字节,1.5K左右。
  • 你要发送100K,操作系统内部会把你这100K数据拆分成若干个数据包【分片】,每个数据包大概1.5K之内【大概拆解成68个包】,对端进行重组。
  • 我们只需要知道有 拆包,组包。
  • 这68个包各自传送的路径可能不同,每一个包可能因为路由器,交换机原因可能被再次分片。
  • 最终TCP/IP协议保证了我们收发数据的顺序性和可靠性。

【TCP 包头结构】

  • 源端口,目标端口
  • 关注syn位和ack位【开/关】
  • 一个tcp数据包,是可能没有包体,此时,总会设置一些标志位来达到传输 控制信息的目的。

【TCP 数据包收发之前的准备工作】

  • 回忆日志操作的步骤:
    • a)打开日志文件
    • b)多次,反复的往日志文件中写信息
    • c)关闭日志文件
  • TCP数据的收发是双工的:每端既可以收数据,又可以发数据
  • TCP数据包的收发也分三大步骤:
    • a)建立TCP连接[connect:客户端] ,三次握手
    • b)多次反复的数据收发[read/wirte]
    • c)关闭TCP连接[close]
  • UDP不存在三次握手来建立连接的问题。UDP数据包是直接发送出去,不用建立所谓的连接

【TCP 三次握手建立连接的过程】

  • 客户端给服务器发送 了一个SYN标志位置位的无包体TCP数据包,SYN被置位,就表示发起TCP链接,协议就这么定
  • 服务器收到了这个SYN标志位置位的数据包,服务器给客户端返回一个SYN和ACK标志位都被置位的无包体TCP数据包,协议就这么定的
  • 客户端收到服务器发送回来的数据包之后,再次发送ACK置位的数据包,服务器端收到这个数据包之后,客户端和服务器端的TCP链接就正式建立后续就可以进行数据收发了

【为什么TCP握手是三次握手而不是二次】

  • TCP之所以要三次握手,原因可能很多,但不管多少 原因,都是为了确保数据稳定可靠的收发
  • 为什么要TCP三次握手最主要的原因之一:尽量减少伪造数据包对服务器的攻击
    • 源ip,源端口      ---------------- 目的ip,目的端口
    • syn------------->
    • <--------syn/ack 【验证源ip和源端口真实存在】
    • ack-------------->

telnet工具使用介绍

  • 是一款命令行方式运行的客户端TCP通讯工具可以连接到服务器端,往服务器端发送数据,也可以接收从服务器端发送过来的信息
  • 该工具能够方便的测试服务器端的某个TCP端口是否通,是否能够正常收发数据,所以是一个非常实用,重要,常用的工具

【windows开启telnet功能】

【linux开启telnet】

  • 命令
telnet ip地址 端口号

wireshark监控数据包

  • wireshark是个软件:分析网络数据包
  • https:www.wireshark.org/download.html
  • 若wireshark显示找不到接口,以管理员权限打开cmd,输入以下命令,再重新打开wireshark
net start npf

【应用演示案例】

  • windows ip:192.168.1.100
  • linux ip:192.168.1.126    9000端口
  • 使用windows上的telnet连接linux服务器,通过wireshark抓 192.168.1.126  9000的包

【wireshark设置】

  • 设置过滤,点击开始

【使用telnet连接服务器】

【查看抓包信息】

  • 捕获数据包后停止监视

TCP断开的四次挥手

  • FIN,ACK   服务器->客户端
  • ACK       客户端->服务器 
  • FIN,ACK   客户端->服务器
  • ACK       服务器->客户端

  • wireshark对断开的捕获

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值