目录

  • Ⅰ 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。

Ⅴ 三次握手

建立连接的过程共需要三个报文段,故称“三次握手”,建立连接的过程如下图所示。

具体过程:

  1. 服务启动后一直处于监听状态,等待客户端的连接请求。客户端发起连接请求,首部标志位SYN置为1,同时选择一个序列号seq = x,这时客户端进入SYN_SENT状态。(SYN报文段不能携带数据)。
  2. 服务器收到连接请求后,结束监听状态,给客户端回复确认报文,SYN = 1,ACK = 1,seq = y,确认号ack = x+1,进入SYN_RCVD状态。
  3. 客户端收到服务器的确认报文后,结束监听状态,给客户端回复确认报文,SYN = 1,ACK = 1,seq = x+1,ack = y+1。随后进入ESTABLISHED状态,此后双方可以进行全双工通信,此后报文中标志位SYN均等于0。

Ⅵ 四次挥手


具体过程:

  1. 客户端首先发出拆除连接报文,FIN = 1,进入FIN_WAIT_1状态。
  2. 服务器收到拆除连接请求,回复确认报文,ACK = 1。
  3. 客户端收到回复进入FIN_WAIT_2 状态,等待服务器发送拆除连接报文,此时服务器还可以给客户端发送数据。服务器若没有要发送的数据,则发送一个拆除连接报文,FIN = 1。
  4. 客户端对此报文回复确认,之后并不会马上关闭连接,而是进入一个TIME_WAIT状态,等待2MSL后,才进入CLOSED状态。而服务器在收到回复报文后就立即进入CLOSED状态。

TCP/IP学习心得相关推荐

  1. TCP/IP学习(30)——L2数据链路层的数据包处理详细流程

    原文地址:TCP/IP学习(30)--L2数据链路层的数据包处理详细流程 作者:GFree_Wind 本文的copyleft归gfree.wind@gmail.com所有,使用GPL发布,可以自由拷贝 ...

  2. 【TCP/IP学习笔记1】 C语言讲解

    TCP/IP学习笔记(一) 一. TCP/IP结构:      TCP/IP是一个四层协议,结构如下:      1.应用层:各种应用程序和协议,如Http.FTP等.      2.传输层:TCP和 ...

  3. TCP/IP学习笔记(一)(转载)

    一.TCP/IP结构:      TCP/IP是一个四层协议,结构如下:      1.应用层:各种应用程序和协议,如Http.FTP等.      2.传输层:TCP和UDP      TCP提供一 ...

  4. TCP / IP学习笔记(9)-dns域名系统

    TCP / IP学习笔记(9)-dns域名系统 前面已经提到了访问一台机器要靠IP地址和MAC地址,其中,MAC地址可以通过ARP协议得到,所以这对用户是透明的,但是IP地址就不行,无论如何用户都需要 ...

  5. TCP/IP学习入门笔记

    近期需要做一个用到UDP的工程,之前的情况是上位机计算出的车速(左右轮速),发送给各个小车(具体实现还不知道,等下去问硬件的同学),现在我们要改成用WIFI通信,大致的想法是:以后电脑和小车都连接好手 ...

  6. TCP/IP学习笔记(3)----IP,ARP,RARP协议

    把这三个协议放到一起学习是因为这三个协议处于同一层(网络层协议),ARP协议用来找到目标主机的Ethernet网卡Mac地址,IP则承载要发送的消息.数据链路层可以从ARP得到数据的传送信息,而从IP ...

  7. 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地址     ...

  8. TCP/IP学习笔记(八)复位报文段

    TCP报文首部中存在一个RST位,如果该位被置1则表示这是个复位报文段.当一个报文段从一端发往一个不存在或者处于异常状态的另一端时,就会以一个复位报文段应答发送端,告知发送端连接出现错误,应当被关闭 ...

  9. TCP/IP学习笔记(五)TCP的保活定时器

    正常情况下,TCP连接的终止需要经历四次挥手阶段,体现在代码上就是某一端主动调用close函数关闭套接字,随后TCP向对端发送FIN位被置为1的报文段标志着连接的结束,同时对端响应应答报文段,并在随后 ...

  10. TCP/IP学习笔记(四)TCP超时重传及拥塞控制

    TCP是可靠的传输层协议,但这并不意味着一端发送的数据一定可以到达另一端,因为传输过程中遇到的情况是不可控的,很有可能就有某些数据发生丢失,所以"可靠"其实并不可靠. 不过毕竟现如 ...

最新文章

  1. 了解C++默默编写并调用哪些函数
  2. JavaScript 位运算总结拾遗
  3. 如何导出NK.bin中的内容
  4. Sublime 3 如何配置SVN插件
  5. docker pull的镜像放在哪里_Docker 安装ELK及Docker常见命令
  6. JAVAEE联邦软件管理系统试题
  7. 数据库:SQLServer Stuff 函数用法笔记
  8. 【Unity基础】Unity打包exe
  9. 给视频翻译字幕可以用哪些软件?
  10. Redis面试题及答案 2021最新版 140道
  11. 【HTML5】input标签中的Require必填项
  12. “钱妈妈”平台犯罪嫌疑人被抓捕 涉嫌非法吸收公众存款
  13. 数学建模之熵权法——基于Topsis模型
  14. 盲孔、埋孔、通孔、一阶HDI、二阶HDI概念
  15. springboot feign too many bytes written executing
  16. 团队协助 开源项目_几款研发团队协作工具对比
  17. 个人能力--认知能力
  18. bootstrap table 复选框获取选中某几行的数据 + 可翻页
  19. 在cmd中使用python3指令打开.py文件无响应,也没有报错的问题
  20. mybatis-plus代码生成器生成

热门文章

  1. html回调函数,JS 回调函数
  2. 联想笔记本小新V2000怎么进BIOS设置
  3. Windows系统下VMware 虚拟机中文件提取到主机的方法
  4. windows 7 安装 sam-ba at91 usb to serial converter 驱动不成功的解决
  5. 电子技术背后的数学本质【2】(反馈电路的分析和运算放大器)
  6. php 单词替换,单词替换 - Shiyin's note
  7. 新东方雅思词汇(List 41 ~ List 45)
  8. oracle nav函数,WordPress函数wp_nav_menu()怎样用_CMS体系建站教程
  9. 华为路由器没有虚拟服务器,华为路由器如何设置 华为路由器设置方法介绍【详解】...
  10. java坦克大战互相碰撞_加强版坦克大战(java版)