TCP/IP学习心得
目录
- Ⅰ TCP/IP协议分层
- 应用层
- 运输层
- 网络层
- 网络接口层
- Ⅱ IP地址
- Ⅲ 在 TCP/IP 内部
- Ⅳ 关于三次握手和四次挥手
- 几个TCP协议首部的标志位
- 几个状态
- 英文缩写
- Ⅴ 三次握手
- Ⅵ 四次挥手
参考
https://www.w3school.com.cn/tcpip/tcpip_intro.asp
https://blog.nowcoder.net/n/c58243574f3b49b1ac8f6d76aa5965bc?from=nowcoder_improve
Ⅰ TCP/IP协议分层
TCP/IP协议族按照层次由上到下,层层包装。
应用层
向用户提供一组常用的应用程序,比如电子邮件、文件传输访问、远程登录等。远程登录TELNET使用TELNET协议提供在网络其它主机上注册的接口。TELNET会话提供了基于字符的虚拟终端。文件传输访问FTP使用FTP协议来提供网络内机器间的文件拷贝功能。
运输层
提供应用程序间的通信。其功能包括:一、格式化信息流;二、提供可靠传输。为实现后者,传输层协议规定接收端必须发回确认,并且假如分组丢失,必须重新发送。
网络层
负责相邻计算机之间的通信。其功能包括三方面。
一、处理来自传输层的分组发送请求,收到请求后,将分组装入IP数据报,填充报头,选择去往信宿机的路径,然后将数据报发往适当的网络接口。
二、处理输入数据报:首先检查其合法性,然后进行寻径–假如该数据报已到达信宿机,则去掉报头,将剩下部分交给适当的传输协议;假如该数据报尚未到达信宿,则转发该数据报。
三、处理路径、流控、拥塞等问题。
网络接口层
这是TCP/IP软件的最低层,负责接收IP数据报并通过网络发送之,或者从网络上接收物理帧,抽出IP数据报,交给IP层。
Ⅱ IP地址
每个计算机必须有一个 IP 地址才能够连入因特网。
每个 IP 包必须有一个地址才能够发送到另一台计算机。
TCP/IP 使用 32 个比特来编址。一个计算机字节是 8 比特。所以 TCP/IP 使用了 4 个字节。
一个计算机字节可以包含 256 个不同的值:
00000000、00000001、00000010、00000011、00000100、00000101、00000110、00000111、00001000 … 直到 11111111。
这就是为什么使用TCP/IP协议的地址是0到255。
Ⅲ 在 TCP/IP 内部
在 TCP/IP 中包含一系列用于处理数据通信的协议:
TCP (传输控制协议) - 应用程序之间通信
UDP (用户数据包协议) - 应用程序之间的简单通信
IP (网际协议) - 计算机之间的通信
ICMP (因特网消息控制协议) - 针对错误和状态
DHCP (动态主机配置协议) - 针对动态寻址
TCP/IP 意味着 TCP 和 IP 在一起协同工作。
TCP 负责应用软件(比如你的浏览器)和网络软件之间的通信。
IP 负责计算机之间的通信。
TCP 负责将数据分割并装入 IP 包,然后在它们到达的时候重新组合它们。
IP 负责将包发送至接受者。
Ⅳ 关于三次握手和四次挥手
几个TCP协议首部的标志位
SYN:同步序号。
FIN:发端完成发送任务。
ACK:确认序号有效。
PSH:接收方应该尽快将这个报文段交给应用层。
RST:重建链接。
几个状态
CLOSED:关闭状态,没有连接活动正在进行。
LISTEN:监听状态,服务器正在等待连接进入。
SYN_RCVD:收到一个连接请求,尚未确认。
SYN_SENT:已经发出连接请求,等待确认。
ESTABLISHED:连接建立,正常数据传输状态。
FIN_WAIT_1:(主动关闭)已经发送关闭请求,等待确认。
FIN_WAIT_2:(主动关闭)收到对方关闭确认,等待对方关闭请求。
TIME_WAIT:完成双向关闭,等待所有分组消失。
CLOSING:双方同时尝试关闭,等待对方确认。
CLOSE_WAIT:(被动关闭)收到对方关闭请求,已经确认。
LAST_ACK:(被动关闭)等待最后一个关闭确认,并等待所有分组消失。
英文缩写
ack:它和大写的ACK不同,它不是标志位,只是一个确认序号,它的序号值表示接收端期待接受的下一个报文的序号值。例如:ack = x+1 表示接收端现在已经确认收到前x个报文,接下来该接收第x+1个报文。
seq:表示当前发送的报文序号,后面依次加一,初始序号是动态随机生成的(后面有详细解释为什么要随机)。
MSL:Maximum Segment Lifetime,最长报文寿命,假设具有最大跳数限制的IP分组在网络中存在的时间不可能超过MSL秒(每个IP分组都有一个TTL,没经过一跳路由器,TTL-1)。RFC1122建议MSL = 2min,现在的网络常设为30s。
Ⅴ 三次握手
建立连接的过程共需要三个报文段,故称“三次握手”,建立连接的过程如下图所示。
具体过程:
- 服务启动后一直处于监听状态,等待客户端的连接请求。客户端发起连接请求,首部标志位SYN置为1,同时选择一个序列号seq = x,这时客户端进入SYN_SENT状态。(SYN报文段不能携带数据)。
- 服务器收到连接请求后,结束监听状态,给客户端回复确认报文,SYN = 1,ACK = 1,seq = y,确认号ack = x+1,进入SYN_RCVD状态。
- 客户端收到服务器的确认报文后,结束监听状态,给客户端回复确认报文,SYN = 1,ACK = 1,seq = x+1,ack = y+1。随后进入ESTABLISHED状态,此后双方可以进行全双工通信,此后报文中标志位SYN均等于0。
Ⅵ 四次挥手
具体过程:
- 客户端首先发出拆除连接报文,FIN = 1,进入FIN_WAIT_1状态。
- 服务器收到拆除连接请求,回复确认报文,ACK = 1。
- 客户端收到回复进入FIN_WAIT_2 状态,等待服务器发送拆除连接报文,此时服务器还可以给客户端发送数据。服务器若没有要发送的数据,则发送一个拆除连接报文,FIN = 1。
- 客户端对此报文回复确认,之后并不会马上关闭连接,而是进入一个TIME_WAIT状态,等待2MSL后,才进入CLOSED状态。而服务器在收到回复报文后就立即进入CLOSED状态。
TCP/IP学习心得相关推荐
- TCP/IP学习(30)——L2数据链路层的数据包处理详细流程
原文地址:TCP/IP学习(30)--L2数据链路层的数据包处理详细流程 作者:GFree_Wind 本文的copyleft归gfree.wind@gmail.com所有,使用GPL发布,可以自由拷贝 ...
- 【TCP/IP学习笔记1】 C语言讲解
TCP/IP学习笔记(一) 一. TCP/IP结构: TCP/IP是一个四层协议,结构如下: 1.应用层:各种应用程序和协议,如Http.FTP等. 2.传输层:TCP和 ...
- TCP/IP学习笔记(一)(转载)
一.TCP/IP结构: TCP/IP是一个四层协议,结构如下: 1.应用层:各种应用程序和协议,如Http.FTP等. 2.传输层:TCP和UDP TCP提供一 ...
- TCP / IP学习笔记(9)-dns域名系统
TCP / IP学习笔记(9)-dns域名系统 前面已经提到了访问一台机器要靠IP地址和MAC地址,其中,MAC地址可以通过ARP协议得到,所以这对用户是透明的,但是IP地址就不行,无论如何用户都需要 ...
- TCP/IP学习入门笔记
近期需要做一个用到UDP的工程,之前的情况是上位机计算出的车速(左右轮速),发送给各个小车(具体实现还不知道,等下去问硬件的同学),现在我们要改成用WIFI通信,大致的想法是:以后电脑和小车都连接好手 ...
- TCP/IP学习笔记(3)----IP,ARP,RARP协议
把这三个协议放到一起学习是因为这三个协议处于同一层(网络层协议),ARP协议用来找到目标主机的Ethernet网卡Mac地址,IP则承载要发送的消息.数据链路层可以从ARP得到数据的传送信息,而从IP ...
- TCP IP学习笔记① 互联网通信过程
文章目录 一.TCP/IP和OSI模型 二.协议分层 2.1 物理层 2.2 数据链路层 2.2.1 以太网协议 2.2.2 MAC地址 2.2.4 广播 2.3 网际层 2.3.1 IP地址 ...
- TCP/IP学习笔记(八)复位报文段
TCP报文首部中存在一个RST位,如果该位被置1则表示这是个复位报文段.当一个报文段从一端发往一个不存在或者处于异常状态的另一端时,就会以一个复位报文段应答发送端,告知发送端连接出现错误,应当被关闭 ...
- TCP/IP学习笔记(五)TCP的保活定时器
正常情况下,TCP连接的终止需要经历四次挥手阶段,体现在代码上就是某一端主动调用close函数关闭套接字,随后TCP向对端发送FIN位被置为1的报文段标志着连接的结束,同时对端响应应答报文段,并在随后 ...
- TCP/IP学习笔记(四)TCP超时重传及拥塞控制
TCP是可靠的传输层协议,但这并不意味着一端发送的数据一定可以到达另一端,因为传输过程中遇到的情况是不可控的,很有可能就有某些数据发生丢失,所以"可靠"其实并不可靠. 不过毕竟现如 ...
最新文章
- 了解C++默默编写并调用哪些函数
- JavaScript 位运算总结拾遗
- 如何导出NK.bin中的内容
- Sublime 3 如何配置SVN插件
- docker pull的镜像放在哪里_Docker 安装ELK及Docker常见命令
- JAVAEE联邦软件管理系统试题
- 数据库:SQLServer Stuff 函数用法笔记
- 【Unity基础】Unity打包exe
- 给视频翻译字幕可以用哪些软件?
- Redis面试题及答案 2021最新版 140道
- 【HTML5】input标签中的Require必填项
- “钱妈妈”平台犯罪嫌疑人被抓捕 涉嫌非法吸收公众存款
- 数学建模之熵权法——基于Topsis模型
- 盲孔、埋孔、通孔、一阶HDI、二阶HDI概念
- springboot feign too many bytes written executing
- 团队协助 开源项目_几款研发团队协作工具对比
- 个人能力--认知能力
- bootstrap table 复选框获取选中某几行的数据 + 可翻页
- 在cmd中使用python3指令打开.py文件无响应,也没有报错的问题
- mybatis-plus代码生成器生成
热门文章
- html回调函数,JS 回调函数
- 联想笔记本小新V2000怎么进BIOS设置
- Windows系统下VMware 虚拟机中文件提取到主机的方法
- windows 7 安装 sam-ba at91 usb to serial converter 驱动不成功的解决
- 电子技术背后的数学本质【2】(反馈电路的分析和运算放大器)
- php 单词替换,单词替换 - Shiyin's note
- 新东方雅思词汇(List 41 ~ List 45)
- oracle nav函数,WordPress函数wp_nav_menu()怎样用_CMS体系建站教程
- 华为路由器没有虚拟服务器,华为路由器如何设置 华为路由器设置方法介绍【详解】...
- java坦克大战互相碰撞_加强版坦克大战(java版)