netcat与socket文件描述符,stdin标准输入,stdout标准输出打交道

如何正确关闭tcp连接?tcp是可靠协议,如果程序不正确,传输数据可能出错/不完整

为什么IO多轮复用要和非阻塞io使用

netcat是瑞士军刀,功能很多

(1)信号发生器source,发送大量数据,相当于chargen

(2)负载,接收大量数据,相当于discard

(3)dd命令产生固定量数据,通过测量这些数据发送的时间,测试出网络带宽

(4)两台机器都运行netcat,可以copy文件,开销比scp小,因为无加解密。可以用md5sum判断文件是否一致

建立tcp连接难度<销毁tcp连接

tcp服务器建立连接难度< tcp客户端

接收tcp数据的难度<发送tcp数据难度

如何正确关闭tcp连接,保证接收者接收完整数据?

如果协议栈接收缓冲区有数据,程序没有读。直接调用close,tcp协议栈会发送rst分节,强行断开连接。

如果协议栈发送缓冲区有数据,对方没有收到,则数据会丢失

recipes/tpc/bin/sender.cc文件,注释掉这几行

nc发送过去的数据sender没有去读,造成sender close的时候,没有通过FIN分节,而是通过RST分节强行终止

server端

client端

如果遇到恶意或者是有bug的client,一直不close,加一个超时控制,安全security,不是为了数据安全safety完整性Integrity

依赖shutdown write会发送FIN,end of file,更好的办法是设计协议,把数据长度包含进来,接收方可以主动判断数据是否收全

netchat是无格式协议

17.如何正确使用TCP相关推荐

  1. 如何正确关闭TCP连接

    文章目录 Ⅰ. 如何正确关闭TCP连接示例程序 Ⅱ. b 程序数据接收不完整的原因可能是 a 程序没有发送完所有的数据(tcp send buffer中的数据)就退出了 Ⅲ. 尝试让程序a中所有排队的 ...

  2. MacOS Sqlcmd: Error: Microsoft ODBC Driver 17 for SQL Server : TCP Provider: Error code 0x2746.

    通过降级 mssql-tools 解决 macOS 上 sqlcmd 不能访问 SQL Server 2014 的问题. 最新的 msodbcsql17 在连接 SQL Server 2014 时报错 ...

  3. java 解析数据包_java - 如何在Java中正确解析TCP数据包? - 堆栈内存溢出

    我目前有一个简单的TCP服务器,该服务器调用一个函数,并在每个新的传入数据包上以字节数组的形式将二进制TCP有效负载传递给它,解析它的正确方法是什么? 我试图通过将其切成不同的字节数组并分别进行处理来 ...

  4. LwIP C TCP/IP Stack 正确的TCP连接数据发送姿态

    注意,本文提供的代码来自本人搞起耍的 netstack,有一些类似 tun2socks LwIP 实现,目前不会考虑集成到产品上面作为可选 TCP/IP 网络栈,当然不会是基于 go-gvisor.g ...

  5. Linux C/C++网络编程实战-陈硕-笔记15-如何正确使用 TCP

    netcat netcat 除了读取 socket 描述符,还要读取 stdin 和 stdout 并发模型 thread-per-connection IO 复用和非阻塞 IO 配合 如何安全的关闭 ...

  6. mysql实战17 | 如何正确地显示随机消息?

    我在上一篇文章,为你讲解完 order by 语句的几种执行模式后,就想到了之前一个做英语学习 App 的朋友碰到过的一个性能问题.今天这篇文章,我就从这个性能问题说起,和你说说 MySQL 中的另外 ...

  7. 17 | 如何正确地显示随机消息?

    我在上一篇文章,为你讲解完order by语句的几种执行模式后,就想到了之前一个做英语学习App的朋友碰到过的一个性能问题.今天这篇文章,我就从这个性能问题说起,和你说说MySQL中的另外一种排序需求 ...

  8. 陈硕《网络编程实战》目录

    陈硕<网络编程实战>目录 00.前言 01.网络编程概要.mkv 02.一个TCP的简单实验.mkv 03.课程内容大纲.mkv 04.回顾基础的Sockets API.mkv 05.TT ...

  9. 国内TCP单边“加速”的“正确”做法

    我一直认为,这是一个丑行!跟几位业内的朋友交流之后,让我了解了更多.         站在相反的方向往后看,正确的做法肯定应该是避免Buffer bloat!这确实足够正确,以至于如果以鲁迅的方式看问 ...

最新文章

  1. 启动mysqld报 mysql the server quit without updating pid file
  2. 日常生活 -- 嵌入式面试
  3. 读取STM32单片机-ID操作
  4. 【DP】合唱队形(jzoj 1122)
  5. Mybatis报错:nested exception is org.apache.ibatis.binding.BindingException: Parameter ‘XXX‘ not found
  6. TF使用例子-情感分类
  7. 大数据学习笔记49:Flume Sinks(Flume接收器)
  8. Android 系统(273)---分布式Redis主备复制
  9. mysql 、慢查询、到底如何玩
  10. Training_model(2)
  11. VS调试配置外网可访问
  12. centos查看yum上jdk的版本
  13. linux中中文转换程序,Linux下在程序中如何进行繁体中文和简体中文的转换
  14. 利用MSXSL.exe绕过AppLocker应用程序控制策略
  15. ArrayList和LinkedList常用方法演示与解析
  16. java 判断简体 繁体字_java判定字符是英文,中文简体,还是繁体
  17. python中常用英语口语_常用英语口语100句(超实用)_
  18. 【spring_Cloud】java.lang.IllegalStateException: Failed to introspect Class [org.springframework.cloud
  19. 中文核心期刊、科技核心期刊、CSCD核心期刊区别
  20. FPGA——1位全加器和4位全加器的实现

热门文章

  1. 传输层学习之五(TCP的SACK,F-RTO)
  2. [Everyday Mathematics]20150225
  3. Eclipse 离线安装ADT
  4. 对称加密、非对称加密、RSA、消息摘要、数字签名、数字证书与 HTTPS 简介
  5. C++11 委托构造函数
  6. 列出搜索过的数据(类似京东顶部搜索框)
  7. 支持向量机SVM推导
  8. Qt5.4生成安装包过程
  9. 利用boost获取时间并格式化
  10. 终于下定决心以后要定期清理清理一下园子啦