TCP/IP 网络通信知识记录

网络知识入门,什么是以太网包,TCP/IP包,MAC头部,IP头部以及TCP头部(六) 目录 一、以太网包 二、协议栈中IP模块的工作方式 1.TCP委托IP模块 2.IP模块的工作方式 三、mac头部 四、何为以太网 1.以太网的定义 2.如何收发以太网包 3.以太网接收网络包详细 4.收到网络包后,协议如何工作 一、以太网包 TCP 模块在执行连接、收发、断开等各阶段操作时,都需要委托 IP 模块将数据封装成包发送给通信对象。我们在 TCP的... 阅读详情

TCP/IP特点:

①面向连接的运输层协议,在使用前必须先建立连接,传输完毕后必须释放已建立的连接;
②每一条TCP连接只能有两个端点,一对一的;
③TCP提供可靠交付的服务,通过TCP连续传送的数据,无差错、不丢失、不重复并且按序到达;
④TCP提供全双工通信,TCP两端都设有发送缓存和接收缓存,用来临时存放双向通信的数据;
⑤面向字节流;
数据包大小限制1460;
套接字 Socket = (IP地址:端口号)
TCP/IP OSI网络模型

网络知识

IP地址

分为网络号和主机号,IP地址(IPADDR)与掩码(NETMASK)进行二进制的按位与,如IP:192.168.6.63,掩码255.255.255.0,按位与后网络号即192.168.6,主机号63;

网关

与IP地址处于同网段,局域网中所有的数据包都交给网关,由网关负责发送给外部网络,起衔接作用;

基本的协议号端口号

以太网协议号:IP:0x0800,ARP:0x0806;
IP协议号:ICMP:1,TCP:6,UDP:17;
端口号:FTP:20 21,SSH:22,Telnet:23,SMTP:25,HTTP:80;

TCP/IP 连接过程(转载)

三次握手过程

三次握手过程
第一次握手:建立连接时,客户端发送syn包(syn=x)到服务器,并进入SYN_SENT状态,等待服务器确认;SYN:同步序列编号(Synchronize Sequence Numbers)。

第二次握手:服务器收到syn包,必须确认客户的SYN(ack=x+1),同时自己也发送一个SYN包(syn=y),即SYN+ACK包,此时服务器进入SYN_RECV状态;

第三次握手:客户端收到服务器的SYN+ACK包,向服务器发送确认包ACK(ack=y+1),此包发送完毕,客户端和服务器进入ESTABLISHED(TCP连接成功)状态,完成三次握手。

四次挥手过程

四次挥手过程
1)客户端进程发出连接释放报文,并且停止发送数据。释放数据报文首部,FIN=1,其序列号为seq=u(等于前面已经传送过来的数据的最后一个字节的序号加1),此时,客户端进入FIN-WAIT-1(终止等待1)状态。 TCP规定,FIN报文段即使不携带数据,也要消耗一个序号。
2)服务器收到连接释放报文,发出确认报文,ACK=1,ack=u+1,并且带上自己的序列号seq=v,此时,服务端就进入了CLOSE-WAIT(关闭等待)状态。TCP服务器通知高层的应用进程,客户端向服务器的方向就释放了,这时候处于半关闭状态,即客户端已经没有数据要发送了,但是服务器若发送数据,客户端依然要接受。这个状态还要持续一段时间,也就是整个CLOSE-WAIT状态持续的时间。
3)客户端收到服务器的确认请求后,此时,客户端就进入FIN-WAIT-2(终止等待2)状态,等待服务器发送连接释放报文(在这之前还需要接受服务器发送的最后的数据)。
4)服务器将最后的数据发送完毕后,就向客户端发送连接释放报文,FIN=1,ack=u+1,由于在半关闭状态,服务器很可能又发送了一些数据,假定此时的序列号为seq=w,此时,服务器就进入了LAST-ACK(最后确认)状态,等待客户端的确认。
5)客户端收到服务器的连接释放报文后,必须发出确认,ACK=1,ack=w+1,而自己的序列号是seq=u+1,此时,客户端就进入了TIME-WAIT(时间等待)状态。注意此时TCP连接还没有释放,必须经过2∗∗MSL(最长报文段寿命)的时间后,当客户端撤销相应的TCB后,才进入CLOSED状态。
6)服务器只要收到了客户端发出的确认,立即进入CLOSED状态。同样,撤销TCB后,就结束了这次的TCP连接。可以看到,服务器结束TCP连接的时间要比客户端早一些。

常见面试题

【问题1】为什么连接的时候是三次握手,关闭的时候却是四次握手?

答:因为当Server端收到Client端的SYN连接请求报文后,可以直接发送SYN+ACK报文。其中ACK报文是用来应答的,SYN报文是用来同步的。但是关闭连接时,当Server端收到FIN报文时,很可能并不会立即关闭SOCKET,所以只能先回复一个ACK报文,告诉Client端,“你发的FIN报文我收到了”。只有等到我Server端所有的报文都发送完了,我才能发送FIN报文,因此不能一起发送。故需要四步握手。

【问题2】为什么TIME_WAIT状态需要经过2MSL(最大报文段生存时间)才能返回到CLOSE状态?

理由1:为了保证Client发送的最后一个ACK报文能够到达Server,这个ACK报文段有可能丢失,因而处在LAST-ACK状态的Server收不到对已发送的FIN+ACK报文段的确认,Server会超时重传这个FIN+ACK报文段,而Client就能在2MSL时间内收到这个重传的FIN+ACK报文段,接着Client重传一次确认,重新启动2MSL计时器,最后Client和Server都正常进入到CLOSED状态。如果Client在TIME-WAIT状态不等待一段时间,而是在发送完ACK报文段后立即释放连接,那么就无法收到Server重传的FIN+ACK报文段,因而也不会再发送一次确认报文段,这样,Server就无法按照正常步骤进入CLOSED状态。

理由2:防止“已失效的连接请求报文段”出现在本连接中,Client在发送完最后一个ACK报文段后,再经过时间2MSL,就可以使本连接持续的时间内所产生的所有报文段都从网络中消失,这样就可以使下一个新的连接中不会出现这种旧的连接请求报文段。

【问题3】为什么不能用两次握手进行连接?

答:主要是为了防止已失效的连接请求报文突然又传到了服务器端,因而产生错误;
可能情况:已失效的连接请求报文段”的产生在这样一种情况下:client发出的第一个连接请求报文段并没有丢失,而是在某个网络结点长时间的滞留了,以致延误到连接释放以后的某个时间才到达server。本来这是一个早已失效的报文段。但server收到此失效的连接请求报文段后,就误认为是client再次发出的一个新的连接请求。于是就向client发出确认报文段,同意建立连接。假设不采用“三次握手”,那么只要server发出确认,新的连接就建立了。由于现在client并没有发出建立连接的请求,因此不会理睬server的确认,也不会向server发送数据。但server却以为新的运输连接已经建立,并一直等待client发来数据。这样,server的很多资源就白白浪费掉了。采用“三次握手”的办法可以防止上述现象发生。例如刚才那种情况,client不会向server的确认发出确认。server由于收不到确认,就知道client并没有要求建立连接。

【问题4】如果已经建立了连接,但是客户端突然出现故障了怎么办?

答:TCP还设有一个保活计时器,显然,客户端如果出现故障,服务器不能一直等下去,白白浪费资源。服务器每收到一次客户端的数据都会重新复位这个计时器,时间通常是设置为两小时,若两小时还没有收到客户端的任何数据,服务器就会发送一个探测报文段,以后每隔75秒钟发送一次。若一连发送10个探测报文仍然没反应,服务器就认为客户端出了故障,接着就关闭连接。

基于FPGA的AGC自适应增益控制系统开发 自动增益控制(AGC)是一种在接收信号过程中自动调整放大器增益的技术,以确保输出信号的幅度保持在一个恒定的水平。基于FPGA实现AGC系统具有高性能、低延迟和高度可配置的特点,广泛应用于无线通信、音频处理和雷达等领域。FPGA上的AGC系统提供了一种高效且灵活的方法来处理变化的信号环境。在实际应用中,通过合理的设计和优化,可以显著提高信号处理系统的鲁棒性和可靠性。 阅读详情

相关推荐

单总线协议(1—Wire bus)【DS2431】

1—Wire 协议定义了复位脉冲、 应答脉冲、写0、写1、读0和读1时序等几种信号类型。所有的单总线命令序列(初始化ROM 命令功能命令)都是由这些基本的信号类型组成的。识别单总线器件(ROM 命令)单总线器件交换数据(功能命令)初始化单总线器件(初始化)

qq_41883039的博客 1146

基于TCP/IP在同一局域网下的数据传输

在开发网络应用程序的时候,会遇到Socket这个概念。一个应用程序通过一个Socket来建立远程连接,而Socket内部通过TCP/IP协议把数据传输到网络。

weixin_54535063的博客 2345

手把手教你用Simulink给C2000配置SCI串口发送数据(附模型与避坑点)

本文详细介绍了如何使用Simulink为C2000系列微控制器配置SCI串口发送数据,包括硬件资源分配、模型搭建、参数设置及调试技巧。通过代码生成和串口通信实践,帮助开发者高效实现嵌入式系统开发,避免常见通信问题。

weixin_30831529的博客 294

linux跨网段间互通

1.简介 TCP协议规定只有处于同一个网段的IP才能实现互通,如果处于不同网段,可以配置一台双网卡机器为网关然后指定路由线路实现跨网段访问。 实现思路:将双网卡服务器作为一个代理服务器,实现双向网关的一个功能 如上图所示,Proxy作为双向网关 Client如果要实现Server的互通,如果Client和Server在同一个子网段可以直接ping同,但是如果不在同一个网段,Client就会先去找其网关,再由其网关寻找Server,对于Server也是这样。 2.实现方案 2.1代理 1.开启数据包的转发功

a18796007675的博客 8276

基于Codex与Skills的学术研究自动化全流程实战指南

还在为海量文献下载、整理、阅读和综述写作而头疼吗?面对堆积如山的PDF,你是否感到无从下手?从选题、文献检索、到写作、绘图、润色,再到应对AI检测和审稿意见,学术研究的每一步都充满挑战。本文将为你带来一套堪称“王炸组合”的解决方案: Codex + Skills 。这不是简单的工具介绍,而是一套从零开始,覆盖学术研究全流程的保姆级实战教程。我们将手把手教你如何安装、配置,并利用强大的Skills(技能)自动化处理文献下载管理、高效撰写综述、生成专业图表、智能润色降重,直至应对审稿。无论你是科研新手还是希望提

weixin_29041195的博客 761

使用jsch和commons-pool2为sftp创建连接池

使用jsch和common-pool2为sftp创建连接池

文若书生的专栏 3281

【网络】TCP协议工作原理

1.工作在网络层的设备:路由器Router。4.如何衡量一个网络是好坏。

weixin_43346403的博客 359

【技术实践指南】Python解析FactSet Revere供应链数据:构建企业级断裂与重构监测指标

本文提供了一份企业级Python实践指南,详细解析如何利用FactSet Revere供应链数据库,构建供应链断裂与重构监测指标。内容涵盖数据清洗、关系对筛选、时间序列处理及核心指标(断裂、恢复、转移)的工程化实现,旨在帮助数据工程师与分析师搭建自动化、可解释的供应链风险监控系统。

weixin_29051811的博客 928

网络通信-TCP协议网络通信的过程

网络通信过程: 1、两台电脑之间可以通过网线连接直接通信,但是需要提前设置好ip地址以及网络掩码。并且IP地址需要控制在同一个网段内,如:192.168.1.1和182.168.1.xx就是同一个网段的。网络掩码(A类:255.0.0.0;B类:255.255.0.0;C类:255.255.255.0)的作用是与ip按位与得到网络号,判断是不是在同一个网段内。 2、使用集线器组成网络,实现多台...

weixin_41599977的博客 3708

Kylin-Desktop-V10-SP1海光版虚拟机安装全流程(含桥接网络配置)

本文详细介绍了在VMware虚拟机中安装Kylin-Desktop-V10-SP1海光版操作系统的完整流程,重点解决了基于海光(Hygon C86)平台的网络配置难题。内容涵盖从镜像准备、虚拟机创建、系统安装到桥接网络配置的三种实战方法,并提供了安装后的优化与必备软件配置指南,帮助用户高效搭建国产化测试与开发环境。

weixin_29323493的博客 352

MTK 平台功耗优化策略全解析:Clock 管控、GPU 同步与 Preview 降帧实战方案

在中高端移动终端影像系统中,Camera 模块已成为功耗的关键来源之一,尤其是在高帧率拍摄、AI 模式实时预览等场景下,ISP、Sensor、GPU 与 SoC 时钟频率的大幅提升极易引发系统发热与续航瓶颈。MTK 平台基于多级功耗控制机制,构建了包括 Clock Gate 管理、GPU 时序协同、预览流降帧、Pipeline 低功耗切换等在内的影像功耗优化策略。本文聚焦于 MTK Camera 系统中的核心功耗控制点,基于实际项目部署案例,系统拆解其在不同模式下的节能路径设计与调试方法,为终端厂商与影像系

努力分享一些人工智能、计算机视觉、影像等相关的知识干货! 2524

关于 TCP/IP 的一些知识点(2)

网络层 IP 协议

a1371688168的博客 264

OV9734 DATASHEET,完整规格书

OV9734完整规格书,包括电气参数,尺寸规格,寄存器配置表等

tcp课堂笔记

C8888899999的博客 559

霍尼韦尔SoftMaster使用说明

霍尼韦尔SoftMaster使用说明

Devexpress16.2.6破解工具

Devexpress16.2.6破解工具Devexpress16.2.6破解工具Devexpress16.2.6破解工具Devexpress16.2.6破解工具

TCP协议笔记整理

cfbl2024的博客 141

TCP 三次握手、四次挥手图解

TCP 三次握手、四次挥手图解,个人复习笔记,通俗易懂。

爱前端的程序媛的博客 615

[计算机网络] 基础知识

二次转载自:https://blog.youkuaiyun.com/qq_34921856/article/details/85238152 记录下计算机网络的基础知识,等有时间了,我也去找个和网络有关的项目练练。 一,概述 网络的网络 网络把主机连接起来,而互联网是把多种不同的网络连接起来,因此互联网是网络的网络。 ISP 互联网服务提供商 ISP 可以从互联网管理机构获得许多 IP 地址,同时...

ckxkexing的博客 2096

linux 刷新tcpip,Linux下Shell介绍以及TCP、IP基础

一、Linux下的shell概述:每个人在成功登录Linux后,系统会出现不同的提示符号,例如 $、~、#等,然后你就可以开始输入需要的命令,若是命令正确,系统 就会依据命令的要求来执行,直到注销系统为止,在登录到注销期间, 输入的每个命令都会经常解译及执行。而这个负责的机制就是shell。其实作为命令语言互动式地解释和执行用户输入的命令只是Shell 功能的一个方面,Shell还可以用来进行程序...

weixin_35141284的博客 336

IP 网络基础学习笔记(01)

IP网络基础学习笔记摘要:本文系统梳理了IP网络基础知识,包括网络通信原理、地址体系(MAC/IP)、局域网与广域网的区别、路由转发机制、TCP/IP协议栈分层模型及常用网络测试命令。重点解析了MAC地址的厂商标识特性、IP地址的子网划分原理、交换机基于MAC表的转发机制与路由器基于IP的路由选择差异。通过学习OSI七层模型各层功能及TCP/UDP协议特性,帮助读者理解从物理连接到应用服务的完整网络通信过程。文章还提供了ping/tracert等实用网络诊断命令的使用示例,为网络初学者构建了清晰的知识框架。

m0_74283658的博客 1098

我的云计算学习日志

《云计算学习日记Day1》—— 从零开始的云计算之旅 今天是系统学习云计算的第一天,记录了关于我的云计算学习,后续将每日更新我的笔记。欢迎大家一起来学习,如果内容有遗漏和错误,还请大家多多指正和包涵,谢谢大家。

forpoppet的博客 1507

网络编程

Java SE 本系列为本人学习情况记录,部分资料来自老师课件或书籍摘录。 计算机网络及TCP、UDP协议下的网络编程 一、概念 1.1 计算机网络 一组相互连接的计算机、使用物理线路进行组成 二、网络分类 主要分为:局域网 LAN、城域网 MAN、广域网 WAN 三、网络通信基本概念 3.1 TCP/IP 传输控制/网际协议 3.2 IP地址 主要用于网络上计算机的唯一标识 3.2.1组成 网络ID 标识设备所在的网段 主机ID 标识特定的设备 3.2.2 分类 3.3 DNS

形容的博客 311

计算机网络笔记

OSI、IP/TCP RM: TCP/IP参考模型是一个抽象的分层模型,这个模型中,所有的TCP/IP系列网络协议都被归类到4个抽象的”层”中。 层数 名称 解释 4 应用层 application layer 例如HTTP、FTP、DNS 3 传输层 transport layer 例如TCP、UDP、RTP、SCTP 2 ...

neninee的博客 2160

HTTP协议与HTTPS协议

无状态:指通信双方在发送的每个消息中都不保留之前消息的状态信息,每个消息处理都是基于它本身信息的而不是从先前收到的消息中提取。例如,DNS就是无状态协议,它的每个查询都是独立的,不受先前查询的影响。SSL握手协议:建立在SSL记录协议之上,用于在实际的数据传输开始前,通讯双方进行身份验证,协商加密算法,交换密钥等。SSL记录协议:建立在可靠的传输协议(TCP之类)上,为高层协议,通过数据封装、压缩、加密等基本功能的支持。常见协议:TCP/IP协议,SOAP协议,HTTP协议,SMTP协议等等。

2202_75347029的博客 498

计算机网络--哈工大网课--MOOC中国大学 慕课 答案

*仅做个人记录,大家可以做完题来对照一下,题目偶尔有变化。 第1周 计算机网络概述(上)(2h12m02s) 作业1 1.(14分) 如下图所示网络。A在t=0时刻开始向C发送一个2Mbits的文件;B在t=0.1+e秒(e为无限趋近于0的小正实数)向D发送一个1Mbits的文件。忽略传播延迟和结点处理延迟。 请回答下列问题: 1) 如果图中网络采用存储-转发方式的报文交换,...

qq_29600105的博客 1万+

字节跳动 百度 腾讯ieg 阿里蚂蚁金服 富涂面经总览,总有一个对你有帮助!

字节跳动data系统 后台开发 一面—时长1小时 1.自我介绍 2.项目深挖 3.四种智能指针 4.shared_ptr深挖(后面又聊了好多现实场景以及是否会造成内存泄露的问题,面试官好像是java,给我稍微讲了下垃圾回收机制) 5.TCP UDP深挖 场景使用 特定场景下的选择 6.TCP三次握手 四次挥手 7.TCP拥塞控制,TCP超时重传 8.DNS解析过程 9.一个URL到页面加载全过程 10.对称加密和非对称加密 11.死锁的形成原因以及解决措施 12.虚函数是什么 13.linux如何查看端口是

weixin_53170315的博客 827

想搞定大厂面试官?springboot分布式事务解决方案

8.15 一面 (60min) 自我介绍,为什么投客户端 python和java有什么区别 java内存模型 gc讲讲 http https区别 cookie,session https握手过程 对称非对称加密算法?哪个效率高? tcp握手要三次,挥手要几次,为什么 进程和线程,描述一下 进程通信方式 线程同步方式 写个生产者消费者模型,要求多线程环境下 为什么要用synchronized?原理?效率? 算法: 二叉树,打印所有根结点到叶节点路径和为k的路径。 反问 先别走,二面面试官马上来 8.1

m0_56146626的博客 184

Socket网络通信详解

Socket是应用层与TCP/IP协议族通信的中间软件抽象层,它是一组接口。在设计模式中,Socket是一个门面模式,它把复杂的TCP/IP协议族隐藏在Socket接口后面,对用户来说,一组简单的接口就是全部,让Socket去组织数据,以符合指定的协议。

qq_36047182的博客 2263
上一篇: C++使用小知识
下一篇: Python turtle库画爱心
照书抄代码
博客等级 码龄8年 32粉丝 50原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值