美文网首页
tcp/ip协议关键知识

tcp/ip协议关键知识

作者: KayFelicities | 来源:发表于2018-07-12 14:02 被阅读0次

TCP/IP 网络协议栈分为应用层(Application)、传输层(Transport)、网络层(Network)和链路层(Link)四层。

image
image

以太网帧格式

image

TCP段格式

image

(1)序号:指出段中的数据部分在发送方数据流中的位置。

确认号:指出接收方希望收到对方下次发送的数据的第一个字节的序号。

TCP段首部的定长部分为20个字节,即5个单位的长度。

URG位:紧急标志,和紧急指针配合使用,当其为1时表示,此报文要尽快传送。

ACK位:确认标志,和确认号字段配合使用,当ACK位置1时,确认号字段有效。

PSH位:为推送标志,置1时,发送方将立即发送缓冲区中的数据。

RST位:复位标志,置1时,表明有严重差错,必须释放连接。

SYN位: 同步标志,置1时,表示请求建立连接。

FIN位:终止标志,置1时,表明数据已经发送完,请求释放连接。

窗口大小:32bit,用于向对方通告当前本机的接受缓冲区的大小。

校验和字段长度:16bit,校验范围包括段首部、数据以及伪首部。

(2)TCP数据传输过程

image

(3)TCP连接的建立

建立连接的过程:

【1】. 客户端发出段1,SYN 位表示连接请求。序号是1000,这个序号在网络通讯中用作临时的地址,每发一个数据字节,这个序号要加1,这样在接收端可以根据序号排出数据包的正确顺序,也可以发现丢包的情况,另外,规定SYN 位和FIN 位也要占一个序号,这次虽然没发数据,但是由于发了SYN 位,因此下次再发送应该用序号1001。mss表示最大段尺寸,如果一个段太大,封装成帧后超过了链路层的最大帧长度,就必须在IP 层分片,为了避免这种情况,客户端声明自己的最大段尺寸,建议服务器端发来的段不要超过这个长度。

【2】 服务器发出段2,也带有SYN 位,同时置ACK 位表示确认,确认序号是1001,表示“我接收到序号1000 及其以前所有的段,请你下次发送序号为1001 的段”,也就是应答了客户端的连接请求,同时也给客户端发出一个连接请求,同时声明最大尺寸为1024。

【3】 客户端发出段3,对服务器的连接请求进行应答,确认序号是8001。

在这个过程中,客户端和服务器分别给对方发了连接请求,也应答了对方的连接请求,其中服务器的请求和应答在一个段中发出,因此一共有三个段用于建立连接,称为'''三方握手(three-way-handshake)'''。在建立连接的同时,双方协商了一些信息,例如双方发送序号的初始值、最大段尺寸等。

(4)TCP数据传输过程

【1】 客户端发出段4,包含从序号1001 开始的20 个字节数据。

【2】 服务器发出段5,确认序号为1021,对序号为1001-1020 的数据表示确认收到,同时请求发送序号1021 开始的数据,服务器在应答的同时也向客户端发送从序号8001 开始的10 个字节数据,这称为piggyback。

【3】 客户端发出段6,对服务器发来的序号为8001-8010 的数据表示确认收到,请求发送序号8011 开始的数据。

在数据传输过程中,ACK 和确认序号是非常重要的,应用程序交给TCP 协议发送的数据会暂存在TCP 层的发送缓冲区中,发出数据包给对方之后,只有收到对方应答的ACK 段才知道该数据包确实发到了对方,可以从发送缓冲区中释放掉了,如果因为网络故障丢失了数据包或者丢失了对方发回的ACK 段,经过等待超时后TCP 协议自动将发送缓冲区中的数据包重发。

(5)TCP连接的关闭

【1】 客户端发出段7,FIN 位表示关闭连接的请求。

【2】 服务器发出段8,应答客户端的关闭连接请求。

【3】 服务器发出段9,其中也包含FIN 位,向客户端发送关闭连接请求。

【4】 客户端发出段10,应答服务器的关闭连接请求。

建立连接的过程是三方握手,而关闭连接通常需要4 个段(四次握手),服务器的应答和关闭连接请求通常不合并在一个段中,因为有连接半关闭的情况,这种情况下客户端关闭连接之后就不能再发送数据给服务器了,但是服务器还可以发送数据给客户端,直到服务器也关闭连接为止,稍后会看到这样的例子。

参考

https://www.cnblogs.com/lifan3a/articles/6649970.html
https://blog.csdn.net/qzcsu/article/details/72861891

相关文章

  • 文章笔记

    TCP/IP协议(一)网络基础知识 TCP/IP协议(二)tcp/ip基础知识 字符编码常识及问题解析 代码命名的...

  • tcp/ip协议关键知识

    TCP/IP 网络协议栈分为应用层(Application)、传输层(Transport)、网络层(Network...

  • PHP面试题集合

    互联网基础知识: TCP/IP协议TCP(传输控制协议)和IP(网际协议 ) 简称TCP/IPIP协议:是将多个包...

  • HTTP协议笔记

    HTTP协议笔记 标签(空格分隔): HTTP,TCP/IP [TOC] 1.网络协议基础知识 TCP/IP协议族...

  • TCP协议

    TCP/IP协议分层详解TCP/IP协议详解通俗易懂网络协议(TCP/IP概述)什么是TCP/IP协议?

  • TCP/IP基础知识

    引言 本篇属于TCP/IP协议的基础知识,重点介绍了TCP/IP协议簇的内容、作用以及TCP、UDP、IP三种常见...

  • Android网络中篇:Http与Https详解

    一、基础知识 1、TCP/IP协议族 IP协议:网络层协议,保证了计算机之间可以发送和接收数据。 TCP协议:传输...

  • 网络基础知识(一)

    TCP/IP 系列文章网络基础知识(-)TCP/IP基础知识(二)物理层(三)数据链路层(四)IP 协议(五)IP...

  • TCP/IP协议

    一、关于TCP/IP TCP/IP协议是一个协议集合,HTTP协议,IP协议,TCP协议,DNS协议等都属于TCP...

  • 关于网络基础知识TCP/IP(三)

    四、掌握TCP/IP协议:TCP/IP3次握手 4.1 IP协议是TCP/IP协议中最重要的协议,它为TCP UD...

网友评论

      本文标题:tcp/ip协议关键知识

      本文链接:https://www.haomeiwen.com/subject/lszlpftx.html