TCP/IP协议入门

TCP/IP协议入门

1. 简介

Transmission Control Protocol/Internet Protocol的简写,即传输控制协议/因特网互联协议。它是网络通信的一套协议集合。

先来看一下OSI和TCP/IP模型:

应用层

就是应用软件使用的协议,如邮箱使用的POP3,SMTP、远程登录使用的Telnet、获取IP地址的DHCP、域名解析的DNS、网页浏览的http协议等;这部分协议主要是规定应用软件如何去进行通信的。

表现层

决定数据的展现(编码)形式,如同一部电影可以采样、量化、编码为RMVB、AVI,一张图片能够是JPEG、BMP、PNG等。

会话层

为两端通信实体建立连接(会话),中间有认证鉴权以及检查点记录(供会话意外中断的时候可以继续,类似断点续传)。

传输层

将一个数据/文件斩件分成很多小段,标记顺序以被对端接收后可以按顺序重组数据,另外标记该应用程序使用的端口号及提供QOS。TCP(传输控制协议)和UDP(用户数据报协议)就是属于传输层协议。

网络层

路由选路,选择本次通信使用的协议(http、ftp等),指定路由策略及访问控制策略。(IP地址在这一层)

数据链路层

根据端口与MAC地址,做分组(VLAN)隔离、端口安全、访问控制。(MAC地址在这一层)处理VLAN内的数据帧转发,跨VLAN间的访问,需要上升到网络层。

物理层

将数据最终编码为用0、1标识的比特流,然后传输。(例如将题主头像的图片,变为一串01100111100这样的数字来表示)。

2. TCP的三次握手和四次挥手

先来看一张经典的图,这个图清晰简明的体现了TCP三次握手和四次挥手的流程。

来解释其中的名词:

SYN:即Synchronization,表示同步序号,用来建立连接,当SYN=1而ACK=0时,表明这是一个连接请求报文。对方若同意建立连接,则应在响应报文中使SYN=1和ACK=1. 因此, SYN置1就表示这是一个连接请求或连接接收报文。

Seq:即Sequence Number,用来标识从TCP发送端向TCP接收端发送的数据字节流,它表示在这个报文段中的第一个数据字节在数据流中的序号;主要用来解决网络报乱序的问题。

ACK:此标志表示应答域有效,就是说前面所说的TCP应答号将会包含在TCP数据包中;有两个取值:0和1,为1的时候表示应答域有效,反之为0;TCP协议规定,只有ACK=1时有效,也规定连接建立后所有发送的报文的ACK必须为1。(注意:和下面的Acknowledgment Number不一样,可以理解ACK是Acknowledgment Number的标志位)

Acknowledgment Number:32位确认序列号包含发送确认的一端所期望收到的下一个序号,因此,确认序号应当是上次已成功收到数据字节序号加1。不过,只有当标志位中的ACK标志(下面介绍)为1时该确认序列号的字段才有效。主要用来解决不丢包的问题;

FIN:即finis,终结的意思, 用来释放一个连接。当 FIN = 1 时,表明此报文段的发送方的数据已经发送完毕,并要求释放连接。

三次握手过程

第一次握手:

建立连接。客户端A发送连接请求报文段,SYN为1,seq为x,然后,客户端A进入SYN_SEND状态,等待服务器B的确认,服务端B由SYN=1知道,A要求建立联机;

第二次握手:

服务端B收到请求后要确认联机信息,向A发送ack number=(A的seq+1),SYN=1,ACK=1,随机产生seq的包,此时服务器进入SYN_RECV状态;

第三次握手:

客户端A收到后检查ack number是否正确,即第一次发送的seq+1,以及位码ACK是否为1,若正确,客户端A会再发送ack number=(服务端B的seq+1),ack=1,主机B收到后确认seq值与ack=1则连接建立成功,客户端和服务器端都进入ESTABLISHED状态,完成TCP三次握手。

完成了三次握手,客户端和服务器端就可以开始传送数据。以上就是TCP三次握手的总体介绍。

三次握手的一个实例:

第一次握手:客户端A发送位码syn=1,随机产生seq number=3626544836的数据包到服务端B,服务端B由SYN=1知道客户端A要求建立联机;

第二次握手:服务端B收到请求后要确认联机信息,向客户端A发送ack number=3626544837,yn=1,ack=1,随机产生seq=1739326486的包;

第三次握手:客户端A收到后检查ack number是否正确,即第一次发送的seq number+1,以及位码ack是否为1,若正确,客户端A会再发送ack number=1739326487,ack=1,服务端B收到后确认seq=seq+1,ack=1则连接建立成功。

四次挥手过程

第一次挥手:

主机A(可以使客户端,也可以是服务器端),设置seq和ack number,向主机2发送一个FIN报文段,此时,主机A进入FIN_WAIT_1状态,这表示主机1没有数据要发送给主机2了;

第二次挥手:

主机B收到了主机A发送的FIN报文段,向主机1回一个ACK报文段,ack number为A的seq加1,主机A进入FIN_WAIT_2状态,主机B告诉主机A,我“同意”你的关闭请求;

第三次挥手:

主机B向主机A发送FIN报文段,请求关闭连接,同时主机2进入LAST_ACK状态;

第四次挥手:

主机A收到主机B发送的FIN报文段,向主机B发送ACK报文段,然后主机A进入TIME_WAIT状态,主机B收到主机A的ACK报文段以后,就关闭连接,此时,主机A等待2MSL后依然没有收到回复,则证明主机B已正常关闭,主机A也可以关闭连接了。

至此,TCP的四次分手就这么愉快的完成了。

3. 为什么需要三次握手

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

4. 为什么需要四次挥手

TCP协议是一种面向连接的、可靠的、基于字节流的运输层通信协议。TCP是全双工模式,这就意味着,当主机1发出FIN报文段时,只是表示主机1已经没有数据要发送了,主机1告诉主机2,它的数据已经全部发送完毕了;但是,这个时候主机1还是可以接受来自主机2的数据;当主机2返回ACK报文段时,表示它已经知道主机1没有数据发送了,但是主机2还是可以发送数据到主机1的;当主机2也发送了FIN报文段时,这个时候就表示主机2也没有数据要发送了,就会告诉主机1,我也没有数据要发送了,之后彼此就会愉快的中断这次TCP连接。如果要正确的理解四次分手的原理,就需要了解四次分手过程中的状态变化。

参考:

OSI模型讲解:https://www.zhihu.com/question/24002080/answer/31817536

理解TCP的三次握手,四次挥手:https://www.jianshu.com/p/ce6bd119a4eb?utm_campaign=hugo&utm_medium=reader_share&utm_content=note&utm_source=weixin-friends

三次握手,四次挥手:https://www.jianshu.com/p/092705233d37

原文地址:https://www.cnblogs.com/scuwangjun/p/9114062.html

时间: 2024-07-31 21:42:16

TCP/IP协议入门的相关文章

TCP/IP协议-入门

Life is not a rehearsal "人生没有彩排" 参考资料:TCP/IP入门经典 (第五版) TCP/IP详解 卷一:协议 一.什么是TCP/IP TCP/IP是一族定义了网络数据传输规则的协议,现在大多数的网络设备都使用TCP/IP协议进行通信 二.TCP/IP分层 1.分层 应用层 传输层 网络层 数据链路层 2.各层的主要功能 ● 数据链路层:处理通信电缆与接口的细节,将网络层传来的IP数据报转化为帧,再转化为比特流,使其能在通信介质之间传输 ● 网络层:提供逻辑

TCP/IP协议入门(三)

B类地址用16位表示主机,若一个机构拥有一个B类地址,那么该地址下最多可拥有6万多台主机,管理艰巨. 一个机构可能拥有多个局域网,需要多个网络地址. IP地址危机:A类地址中用24位表示主机地址,若一个机构拥有一个完整的A类地址,但实际该机构不可能拥有1600万台主机,因此造成IP地址浪费. 子网划分结合无类别域间路由(CIDR)与网络地址转换(NAT),对TCP/IP网络分段,有效利用主机地址. 子网划分:对A.B.C类大型网络进行划分,通常将原IP地址中的主机号划分成子网号与主机号(借位),

TCP/IP协议-IP协议

A contented mind is a perpetual feast. "知足长乐" 参考资料:TCP/IP入门经典 (第五版) TCP/IP详解 卷一:协议 一.简介 IP协议(Internet协议,网际协议),是TCP/IP协议族中最核心的协议,位于协议栈的网络层 既然位于网络层,所以IP协议最主要的功能就是 提供独立于硬件的逻辑寻址 和 支持网间数据传递的路由选择,我们将在后面的部分介绍这两个功能,下面先来分析一下IP首部 二.IP首部 我们在 TCP/IP协议-入门 中说

网络编程的基本概念,TCP/IP协议简介

8.1.1 网络基础知识 计算机网络形式多样,内容繁杂.网络上的计算机要互相通信,必须遵循一定的协议.目前使用最广泛的网络协议是Internet上所使用的TCP/IP协议. 网络编程的目的就是指直接或间接地通过网络协议与其他计算机进行通讯.网络编程中有两个主要的问题,一个是如何准确的定位网络上一台或多台主机,另一个就是找到主机后如何可靠高效的进行数据传输.在TCP/IP协议中IP层主要负责网络主机的定位,数据传输的路由,由IP地址可以唯一地确定Internet上的一台主机.而TCP层则提供面向应

http、TCP/IP协议与socket之间的区别

网络由下往上分为:  www.2cto.com 物理层-- 数据链路层-- 网络层--                       IP协议 传输层--                       TCP协议 会话层-- 表示层和应用层--           HTTP协议 1.TCP/IP连接 手机能够使用联网功能是因为手机底层实现了TCP/IP协议,可以使手机终端通过无线网络建立TCP连接.TCP协议可以对上层网络提供接口,使上层网络数据的传输建立在“无差别”的网络之上. 建立起一个TCP连

TCP/IP协议,HTTP协议

1. 协议  a. TCP/IP总体构架概述     TCP/IP协议并不全然符合OSI的七层參考模型.传统的开放式系统互连參考模型,是一种通信协议的7层抽象的參考模型,当中每一层运行某一特定任务.该模型的目的是使各种硬件在同样的层次上相互通信.这7层是:物理层.数据链路层.网路层.传输层.话路层.表示层和应用层.而TCP/IP通讯协议採用了4层的层级结构,每一层都呼叫它的下一层所提供的网络来完毕自己的需求.这4层分别为:     i.   应用层:应用程序间沟通的层,如超文本传送协议(HTTP

OSI七层模型详解 TCP/IP协议

总结 OSI中的层 功能 TCP/IP协议族 应用层 文件传输,电子邮件,文件服务,虚拟终端 TFTP,HTTP,SNMP,FTP,SMTP,DNS,Telnet 等等 表示层 数据格式化,代码转换,数据加密 没有协议 会话层 解除或建立与别的接点的联系 没有协议 传输层 提供端对端的接口 TCP,UDP 网络层 为数据包选择路由 IP,ICMP,OSPF,EIGRP,IGMP 数据链路层 传输有地址的帧以及错误检测功能 SLIP,CSLIP,PPP,MTU 物理层 以二进制数据形式在物理媒体上

TCP/IP协议详解内容总结

TCP/IP协议 TCP/IP不是一个协议,而是一个协议族的统称.里面包括IP协议.IMCP协议.TCP协议. TCP/IP分层: 这里有几个需要注意的知识点: 互联网地址:也就是IP地址,一般为网络号+子网号+主机号 域名系统:通俗的来说,就是一个数据库,可以将主机名转换成IP地址 RFC:TCP/IP协议的标准文档 端口号:一个逻辑号码,IP包所带有的标记 Socket:应用编程接口 数据链路层的工作特性: 为IP模块发送和接收IP数据报 为ARP模块发送ARP请求和接收ARP应答(ARP:

TCP/IP协议三次握手与四次握手流程解析

原文链接地址:http://www.2cto.com/net/201310/251896.html TCP/IP协议的详细信息参看<TCP/IP协议详解>三卷本.下面是TCP报文格式图 上图中有几个字段需要重点介绍下:   (1)序号:Seq序号,占32位,用来标识从TCP源端向目的端发送的字节流,发起方发送数据时对此进行标记.   (2)确认序号:Ack序号,占32位,只有ACK标志位为1时,确认序号字段才有效,Ack=Seq+1.   (3)标志位:共6个,即URG.ACK.PSH.RST