首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >网络编程之TCP/IP

网络编程之TCP/IP

原创
作者头像
CoffeeLand
修改于 2020-04-07 03:24:53
修改于 2020-04-07 03:24:53
43900
代码可运行
举报
文章被收录于专栏:CoffeeLandCoffeeLand
运行总次数:0
代码可运行

Table of Content

  • Prerequisites
  • TCP intro
  • TCP的三次握手
  • Reference

Prerequisites

tcp flags

Value

Flag Type

Description

S

SYN

Connection Start

F

FIN

Connection Finish

P

PUSH

Data push

R

RST

Connection reset

.

ACK

Acknowledgment

TCP intro

tcp是传输层的协议

TCP的三次握手

tcp三次握手的过程

tcp的三次握手是指client与server端通过发送http请求,建立tcp连接, 分为三个步骤

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
第一步,  client向server端发送建立连接的请求,SYN来标志, SYN[S]来表示
第二步, server端收到clent端发来的SYN请求, 然后发送确认ACK并建立连接SYN,SYN+ACK标志,[S.]
第三步, client端发送给客户端确认的相应ACK,[.]来表示

tcp的连接示意图

tcpdump分析tcp建立连接的过程

下面是从浏览器(客户端) 发送HTTP GET 请求给server端, 利用tcpdump抓包工具打印出详细过程

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
[root@mybuildvm bandao]# tcpdump -i any -c5 -nn port 8080
tcpdump: verbose output suppressed, use -v or -vv for full protocol decode
listening on any, link-type LINUX_SLL (Linux cooked), capture size 65535 bytes
(第一步) 01:20:59.617829 IP6 ::1.52734 > ::1.8080: Flags [S], seq 2772511575, win 43690, options [mss 65476,sackOK,TS val 51495764 ecr 0,nop,wscale 7], length 0
(第二步)15:50:22.569058 IP6 ::1.8080 > ::1.52734: Flags [S.], seq 3471702762, ack 2772511576, win 43690, options [mss 65476,sackOK,TS val 51495764 ecr 51495764,nop,wscale 7], length 0
(第三步)01:20:59.617871 IP6 ::1.52734 > ::1.8080: Flags [.], ack 1, win 342, options [nop,nop,TS val 51495764 ecr 51495764], length 0
(传输数据)01:20:59.618000 IP6 ::1.52734 > ::1.8080: Flags [P.], seq 1:405, ack 1, win 342, options [nop,nop,TS val 51495764 ecr 51495764], length 404
(响应完毕)01:20:59.618013 IP6 ::1.8080 > ::1.52734: Flags [.], ack 405, win 350, options [nop,nop,TS val 51495764 ecr 51495764], length 0
5 packets captured
10 packets received by filter
0 packets dropped by kernel

References

https://opensource.com/article/18/10/introduction-tcpdump

http://www.tcpipguide.com/free/t_TCPConnectionEstablishmentProcessTheThreeWayHandsh-3.htm

<未完待续~~~~~~~~~~~~~>

请点赞支持, 谢谢:)

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
tcpdump命令
  tcpdump是Linux下强大的抓包工具,不仅可以分析数据包流向,还可以对数据包内容进行监听。通过分析数据包流向,可以了解一条连接是如何建立双向连接的。   tcpdump允许用户(一般是root)拦截和显示发送或收到过网络连接到该计算机的TCP/IP和其他数据包。
用户1432189
2018/09/05
1.3K0
使用 tcpdump 来了解 tcp 工作流程
由于我们接下来直接在 127.0.0.1 下测试,所以我们只需要监听此 ip 下的数据即可。
祥祥
2021/01/24
1.2K0
超详细的网络抓包神器 Tcpdump 使用指南
tcpdump 是一款强大的网络抓包工具,它使用 libpcap 库来抓取网络数据包,这个库在几乎在所有的 Linux/Unix 中都有。熟悉 tcpdump 的使用能够帮助你分析调试网络数据,本文将通过一个个具体的示例来介绍它在不同场景下的使用方法。不管你是系统管理员,程序员,云原生工程师还是 yaml 工程师,掌握 tcpdump 的使用都能让你如虎添翼,升职加薪。
米开朗基杨
2020/02/25
22.3K0
tcpdump教程_TCPDUMP
因为客户端可以设置接收数据的超时时间,当客户端调用connect函数发送SYN时,由于客户端收到服务端的SYN/ACK的时间超过了客户端设置的等待时间,造成接收超时。当服务端的SYN/ACK到达时,客户端回应RST。
全栈程序员站长
2022/11/10
8670
高并发架构的TCP知识介绍
做为一个有追求的程序员,不能只满足增删改查,我们要对系统全方面无死角掌控。掌握了这些基本的网络知识后,相信一方面日常排错中会事半功倍,另一方面日常架构中不得不考虑的高并发问题,理解了这些底层协议也是会如虎添翼。
大愚
2019/05/15
1.1K0
如果服务进程没启动,客户端发起 tcp 连接,会发生什么?
面试的时候被问到这么一个问题:如果服务进程没启动,客户端发起 tcp 连接,会发生什么?
祥祥
2021/11/05
1.2K0
TCP协议三次握手和四次挥手抓包分析
 TCP协议在双方建立连接的时候需要三次握手,首先客户端发送SYN标志为1的TCP数据包,然后服务器端收到之后,也会发送一个SYN标志置位,并且带有ack应答的数据包,最后客户端再发送给服务端一个应答,这样就建立起了通信。
用户4415180
2022/06/23
6020
TCP协议三次握手和四次挥手抓包分析
tcpip四次握手三次挥手_tcp四次挥手的全过程
After IP adds a header to the TCP segments the resulting IP datagrams are sent one-by-one to the “Ethernet layer”. Note that TCP/IP are part of operating system, while most functionality of Ethernet is implemented on the NIC(Network Interface Card).
全栈程序员站长
2022/11/15
3900
tcpip四次握手三次挥手_tcp四次挥手的全过程
Kubernetes 疑难杂症排查分享:神秘的溢出与丢包
图片下载走的 k8s ingress,这个 ingress 路径对应后端 service 是一个代理静态图片文件的 nginx deployment,这个 deployment 只有一个副本,静态文件存储在 nfs 上,nginx 通过挂载 nfs 来读取静态文件来提供图片下载服务,所以调用链是:client --> k8s ingress --> nginx --> nfs。
imroc
2020/01/13
3.2K1
Linux TCP客户端出现CLOSE_WAIT后进入死循环
在前文中讲述了Linux服务端TCP的某个链路变成CLOSE_WAIT状态,然后由于客户端已经关闭了(发送了RST标志的报文),那么服务端如果继续向这个链路中写入数据的话就会收到SIGPIPE信号而终止,这篇文章主要通过客户端进入CLOSE_WAIT后由于收到服务端产生的RST标志报文进入死循环的情况。注:RST表示复位,用来关闭异常的连接。
typecodes
2024/03/29
7420
Linux TCP客户端出现CLOSE_WAIT后进入死循环
tcpdump命令讲解
老高的建议:把流量比作水源,工具tcpdump就是一个过滤器,能够过滤出我们需要的纯净水,而水源有很多技术特征能够为我所用。
老高的技术博客
2022/12/28
7780
tcpdump命令讲解
网络编程-从TCP连接的建立说起
网络编程几乎是每一门编程语言都会涉及的内容,虽然各种语言调用的方式可能不一样,但它们背后的原理支持都是一样的。因此本文将从TCP的连接的建立说起。在此之前,假设你已经对计算机网络有了最基本的认识。
编程珠玑
2019/07/12
7560
网络编程-从TCP连接的建立说起
[Linux] 使用tcpdump查看上传文件过程中的tcp传输过程
客户端===>服务器[S] 标志位SYN 是1 , mss 65495 (每个包传输的最大数据部分是65495字节) seq序列号是87768135
唯一Chat
2020/11/27
5870
超级肝文-深入剖析客户端出现connect reset by peer报错相关的技术知识
关于http请求的报错:connect reset by peer,我相信大家应该都有所见过。今天我来剖析一下这个报错情况以及整理一下相关技术知识。
公众号-利志分享
2022/04/25
3.4K0
超级肝文-深入剖析客户端出现connect reset by peer报错相关的技术知识
对又一个epoll问题的全面分析
该方法最主要的目的是,当客户端建立tcp连接到服务端时,服务端立即调用shutdown方法,关闭其send方向。
KINGYT
2019/08/05
1.1K0
TCP协议三次握手和四次挥手抓包分析
ACK : TCP协议规定,只有ACK=1时有效,也规定连接建立后所有发送的报文的ACK必须为1
胡齐
2019/10/31
1.6K0
探索 tcpdump:强大的命令行网络分析工具
tcpdump 是一款广泛应用的命令行网络分析工具,它允许用户在各种网络环境下捕获和分析网络流量。本文将详细介绍 tcpdump 的基本概念、主要功能、应用场景、使用技巧以及局限性和替代方案。
陆业聪
2024/08/19
5960
探索 tcpdump:强大的命令行网络分析工具
linux主机网络流量抓包监控
tcpdump 是一个命令行应用程序,可让你捕获和分析通过系统的网络流量。它通常用于帮助解决网络问题以及安全工具。 tcpdump 是一个强大且多功能的工具,包括许多选项和过滤器,可用于各种情况。由于它是一个命令行工具,因此非常适合在没有 GUI 的远程服务器或设备中运行,以收集可以稍后分析的数据。它也可以在后台启动或使用 cron 等工具作为预定作业启动。 1. 在 Linux 上安装 Tcpdump 包含在多个 Linux 发行版中,因此你可能已经安装了它。使用以下命令检查你的系统上是否安装了 tcpd
入门笔记
2022/06/02
6.1K0
TCP协议学习笔记、报文分析
TCP(Transmission Control Protocol传输控制协议)协议是基于IP协议,面向连接的、可靠的、基于字节流的传输层通信协议。
DannyHoo
2021/12/06
1.7K0
TCP协议学习笔记、报文分析
一个有关tcp的非常有意思的问题
在tcp建立连接后,先主动关闭其服务端,之后再在客户端下对其socket进行写操作,正常思维都会认为,这个写操作肯定会返回错误吧?
KINGYT
2019/07/22
9240
相关推荐
tcpdump命令
更多 >
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档