浅析TCP之头部可选项

1、回顾TCP报文格式

1)TCP报文:由 TCP首部 和 TCP数据 组成。

2)TCP首部:由 20字节的固定长度 和 可变长字段(选项和填充)组成。

3)TCP首部总长度:由TCP头中的“数据偏移”字段决定。该字段占4bit,取最大的1111时,也就是十进制的15,TCP首部的偏移单位为4byte,那么TCP首部长度最长为15*4=60字节。

4)选项和填充 的长度:= TCP首部总长度 - 20字节的固定长度。由3)的计算可知,TCP首部总长度最大为60字节,那么“选项和填充”字段的长度最大为40字节。填充是为了使TCP首部为4byte的整数倍。

TCP首部的每个字段我们不再详述,请点击查看我的另一篇博客TCP报文格式详解


2、可选项字段的格式


每个选项的开始是1字节的kind字段,说明选项的类型。一个TCP包可以包含多个可选项。

3、可选项的类型


4、关于可选项字段的详解可查看TCP可选项字段详解1




  • 1
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
TCP(传输控制协议)是一种面向连接的协议,用于在网络上可靠地传输数据。它提供了数据的可靠传输、流量控制和拥塞控制等功能,是互联网的核心协议之一。 在Node.js中,使用内置的net模块可以轻松地创建TCP服务器和客户端。下面是一个简单的TCP服务器示例: ```javascript const net = require('net'); const server = net.createServer((socket) => { console.log('client connected'); socket.on('data', (data) => { console.log(`received data: ${data}`); socket.write(`echo: ${data}`); }); socket.on('close', () => { console.log('client disconnected'); }); }); server.listen(3000, () => { console.log('server started on port 3000'); }); ``` 这个服务器会监听本地的3000端口,当有客户端连接时,会打印出“client connected”的信息。当客户端发送数据时,服务器会收到这些数据并将其打印到控制台上,然后将“echo: ”加在数据前发送回客户端。当客户端断开连接时,服务器会打印“client disconnected”的信息。 下面是一个简单的TCP客户端示例: ```javascript const net = require('net'); const client = new net.Socket(); client.connect(3000, 'localhost', () => { console.log('connected to server'); client.write('hello, server'); }); client.on('data', (data) => { console.log(`received data: ${data}`); client.destroy(); }); client.on('close', () => { console.log('disconnected from server'); }); ``` 这个客户端会连接到本地的3000端口,并发送“hello, server”的消息。当客户端收到服务器的响应时,会打印出这些数据,并断开连接。 总的来说,TCP在网络通信中扮演着非常重要的角色,Node.js内置的net模块提供了简单易用的TCP套接字接口,使得我们可以轻松地创建TCP服务器和客户端。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值