1. 首页
  2. 什么是tcp/ip协议(TCP/IP协议详解)

什么是tcp/ip协议(TCP/IP协议详解)

简介:关于什么是tcp/ip协议(TCP/IP协议详解)的相关疑问,相信很多朋友对此并不是非常清楚,为了帮助大家了解相关知识要点,小编为大家整理出如下讲解内容,希望下面的内容对大家有帮助!
如果有更好的建议或者想看更多关于技术大全及相关资讯,可以多多关注茶馆百科网。

在世界各地,每个人都有各种各样的计算机运行不同的操作系统,它们用来表达相同信息的方法也大不相同。就像《圣经》里上帝把所有人的口音都搞砸了这样他们就没法一起工作了。计算机用户意识到,单靠计算机并不能发挥多大作用。只有把它们结合起来,计算机才能充分发挥其潜力。所以人们找到了将电脑连接在一起的方法。

但仅仅联系是不够的,就好像两个说不同语言的人相遇了,根本无法交流信息。所以他们需要定义一种通用的通信方式,TCP/IP就是为此而诞生的。TCP/IP不是一个协议,而是一个协议族。它包括IP协议、IMCP协议、TCP协议,我们比较熟悉的有http、ftp、pop3协议等。电脑有了这些,就好像学会了一门外语,可以和其他电脑终端做自由的交流。

[TCP层2.jpg]

0

应用层:为用户提供一组常用的应用,如电子邮件、文件传输访问、远程登录等。远程登录TELNET TELNET为网络中的其他主机提供注册接口。TELNET会话提供基于字符的虚拟终端。文件传输访问FTP FTP协议用于在网络中的机器之间复制文件。

传输层:提供应用程序之间的通信。它的功能包括:1。格式化信息流;二、提供可靠的传输。为了实现后者,传输层协议规定接收方必须发回确认,如果数据包丢失,则重新传输它。

网络层:负责相邻计算机之间的通信。它的功能包括三个方面。首先,处理来自传输层的数据包发送请求。接收到请求后,将数据包装入IP数据报,填充报头,选择到归巢机的路径,然后将数据报发送到相应的网络接口。

2. 处理传入数据报:首先检查其合法性,然后进行寻路——如果数据报已经到达归航机,则删除报头,并将其余部分交给相应的传输协议;如果数据报没有到达目的地,则转发数据报。

三、处理好路径、流量控制、拥堵等问题。

网络接口层:这是TCP/IP软件的最低层,接收IP数据报并通过网络发送,或者接收来自网络的物理帧,提取IP数据报并将其传递给IP层。

为什么会有TCP/IP协议

IP用于计算机之间的通信。

IP是一种无连接的通信协议。它不占用正在通信的两台计算机之间的通信线路。通过这种方式,IP减少了对网络线路的需求。每条线路可以同时满足多台不同计算机的通信需求。

有了IP,消息(或其他数据)被分解成小的、独立的数据包,并通过因特网在计算机之间发送。

IP负责将每个数据包路由到目的地。

0

每个IP包在发送到另一台计算机之前必须有一个地址。

网络上的每个节点必须有一个单独的Internet地址(也称为IP地址)。现在,通常使用的IP地址是一个32位的数字,这就是通常所说的IPv4标准,并且这些32位的数字分为四组,这就是常见的255.255.255.255风格。在IPv4标准中,地址分为五类,我们通常使用B类地址。详细分类请参考其他文件。需要注意的是,IP地址是网络号和主机号的组合。

CP/IP使用32位进行寻址。一个计算机字节是8位。所以TCP/IP使用4个字节。一个计算机字节可以包含256个不同的值:00000000、00000001、00000010、00000011、00000100、00000101、00000110、00000111、00001000.一直到11111111。现在您知道为什么TCP/IP地址是0到255之间的四个数字。

单线程用户模式TCP/IP协议栈,epoll实现,包括服务器用例,并发测试用例:

随附视频说明点击跳转获取

TCP/IP协议分层

TCP用于应用程序之间的通信。

当一个应用程序想要通过TCP与另一个应用程序通信时,它发送一个通信请求。请求必须发送到一个准确的地址。握手之后,TCP在两个应用程序之间建立全双工通信。

这种全双工通信将占用两台计算机之间的通信线路,直到它被一方或双方关闭。

UDP与TCP类似,但比TCP更简单、更不可靠。

当前位置

IP 是无连接的

当一个IP数据包从一台计算机发出时,它到达一个IP路由器。

IP路由器负责直接或通过其他路由器将数据包路由到目的地。

在同一通信中,一个数据包可能采用与另一个数据包不同的路径。路由器负责根据流量、网络错误或其他参数正确寻址。

当前位置

IP地址

12个阿拉伯数字很难记住。用一个名字比较容易。

TCP/IP地址所使用的名称称为域名。W3school.com.cn是一个域名。

当您输入像http://www.w3school.com.cn这样的域名时,域名会被DNS程序转换成一个数字。

在世界各地,大量的DNS服务器连接到互联网。DNS服务器负责将域名转换为TCP/IP地址,以及用新的域名信息更新彼此的系统。

当一个新的域名用它的TCP/IP地址注册时,世界各地的DNS服务器更新这个信息。

TCP 使用固定的连接

TCP/IP TCP和IP协同工作。

TCP负责应用软件(如浏览器)和网络软件之间的通信。

IP负责计算机之间的通信。

TCP负责分割数据和加载IP数据包,然后在它们到达时重新组合它们。

IP负责向接收方发送数据包。

IP 路由器

TCP报文格式1.jpg

16位源端口号:16位源端口号包含发起通信的端口号。源端口和源IP地址确定报文的返回地址。

16位目的端口号:16位目的端口号域定义了传输的目的。此端口表示接收消息的机器上的应用程序地址接口。

32位序列号:接收计算机使用的32位序列号被重新分割成其原始形式。当存在SYN时,序列码实际上是初始序列号(ISN),第一个数据字节是ISN+1。这个序列号(序列码)用来补偿传输中的不一致。

32位识别序列号:接收计算机使用32位序列号将分割后的文本重建为原始形式。如果设置了ACK控制位,则该值表示要接收的数据包的序列码。

4位报头长度:4位包括TCP报头的长度,表示数据从哪里开始。

Reserved (6bits):取值范围为6位,必须为0。预留作日后界定新用途之用。

Flag: 6位标志字段。它们是:紧急标志、有意义应答标志、推送标志、复位连接标志、同步序列号标志、完成发送数据标志。依次为URG、ACK、PSH、RST、SYN、FIN。

16位窗口大小:表示要接收的每个TCP数据段的大小。TCP流控制由连接的每一端通过声明的窗口大小提供。窗口大小是字节数,从确认序数字段指定的值开始,这是接收者期望接收的字节数。窗口大小是一个16字节的字段,所以最大窗口大小是65535字节。

16位checksum: 16位TCP头。源机器根据数据的内容计算一个值,而接收端必须具有与源机器完全相同的数值结果,以证明数据的有效性。检查和覆盖整个TCP报文段:这是一个必填字段,必须由发送方计算和存储,并由接收方验证。

16位紧急指针:表示优先级数据后面跟着字节,只有设置了URG标志才有效。如果未设置URG标志,则紧急字段作为种群。加快处理标记为紧急的数据段。

选项:长度不同,但长度必须为1字节。如果没有选项,则表示1字节字段等于0。

Data: TCP报文的加载数据。

在上述字段中,6位标志字段的选项具有以下功能。

分享更多关于Linux后端开发网络底层原理的知识学习提升点击跳转获取,提升技术栈,知识内容包括Linux、Nginx、ZeroMQ、MySQL、Redis、线程池、MongoDB、ZK、Linux内核、CDN、P2P、epoll、Docker、TCP/IP、协程、DPDK等。

三次握手建立TCP连接。建立TCP连接时,客户端和服务器端发送3个报文来确认连接。在套接字编程中,这个过程由客户端执行connect触发,如下所示:

TCP三次握手。png

(1)第一次握手:客户端设置标志位SYN为1,随机生成值seq=J,发送报文给服务器。客户端进入SYN_SENT状态,等待服务器确认。

(2)第二次握手:服务器收到报文后,通过标志位SYN=1知道客户端请求建立连接。Server将SYN和ACK的标志位都置为1,ACK=J+1,随机生成一个值seq=K,发送给Client确认连接请求。服务器进入SYN_RCVD状态。

(3)第三次握手:客户端收到确认后,检查ack是否为J+1, ack是否为1。如果ACK正确,则客户端将标志位ACK置为1,ACK=K+1,并将报文发送给服务器。服务器检查ACK是否为K+1, ACK是否为1。Client和Server进入ESTABLISHED状态,完成三次握手,然后开始Client和Server之间的数据传输。

简而言之,是的

1. 连接建立后,客户端向服务器发送SYN报文(SYN=i),进入SYN-send状态,等待服务器确认连接

2. 服务器接收到SYN报文后,必须确认客户端的SYN报文(ack=i+1),并发送SYN报文(SYN=k),即SYN+ ack报文。此时,服务器进入SYN-RECv状态

3.客户端收到服务器发送的SYN+ACK报文后,向服务器发送确认ACK (ACK=k+1)。报文发送后,客户端和服务器进入ESTABLISHED状态,完成三次握手,客户端和服务器开始传输数据。

SYN攻击:

在三次握手过程中,在服务器发送SYN-ACK之后,在从客户端接收到ACK之前的TCP连接称为半开连接。此时,服务器处于SYN_RCVD状态。收到ACK后,TCP连接状态为Syn_RCVD。日志含义服务器进入ESTABLISHED状态。SYN攻击是指客户端在短时间内伪造大量不存在的IP地址,不断向服务器发送SYN报文。服务器响应确认报文,等待客户端的确认。由于源地址不存在,服务器需要重新发送数据包,直到超时。这些伪造的SYN包在生产时间占用了断开连接的队列,导致正常的SYN请求因为队列已满而被丢弃,从而导致网络拥塞甚至系统崩溃。SYN攻击是典型的DDOS攻击。检测SYN攻击的方法很简单。即当服务器上有大量的半连接且源IP地址是随机的情况下,检测到SYN攻击。

# netstat - nap | grep SYN_RECV:

域名

,所谓的四波(Four - Way Wavehand)将TCP连接终止,是指断开一个TCP连接,需要客户端和服务器共发送4包来确认连接断开。在套接字编程中,该过程由客户端或服务器执行close触发,如下图所示:

TCP波形四次。png

TCP连接是全双工的,所以每个方向必须单独关闭。该原则是当一方发送完数据后,发送FIN终止该方向的连接。收到FIN仅表示该方向没有数据流,即不再接收数据。但是,数据仍然可以在这个TCP连接上发送,直到FIN也在这个方向上发送。第一个关闭的一方将执行主动关闭,而另一方将执行被动关闭,如上图所示。

(1)第一波:Client发送FIN,禁止Client向Server发送数据,Client进入FIN_WAIT_1状态。

(2)第二次波:服务器收到FIN后,向客户端发送ACK,确认收到序号+1(与SYN相同,一个FIN占用一个序号),服务器进入CLOSE_WAIT状态。

(3)第三波:服务器发送FIN消息,停止服务器向客户端传输数据,服务器进入LAST_ACK状态。

(4)第四波:客户端收到FIN后进入TIME_WAIT状态,然后向服务器发送ACK,确认收到号码+1。服务器进入CLOSED状态并波动四次。

TCP/IP

这是因为在LISTEN状态下,服务器接收到建立连接的SYN报文后,会向客户端发送ACK报文和SYN报文。当连接关闭时,收到对端的FIN报文,只表示对端不再发送数据,但仍能接收数据。对端不能将所有数据发送给对端。因此,对端可以立即关闭连接,或者先向对端发送一些数据,然后再向对端发送FIN报文,表示同意关闭连接。ACK和FIN是分开发送的。

原因如下:1。保证TCP全双工连接能够可靠关闭;2. 确保该连接的重复数据段从网络中消失

首先,如果Client是直接CLOSED,由于IP协议不可靠或其他网络原因,Server没有收到Client的ACK。在这种情况下,由于Client是CLOSED状态,找不到重新发送的FIN对应的连接。最后,服务器收到一个RST而不是ACK,服务器认为连接是错误的,并将问题报告给上层管理。这种情况不会造成数据丢失,但会导致TCP协议不能满足可靠连接的要求。因此,Client不会直接进入CLOSED状态。相反,它需要保留TIME_WAIT。当客户端再次收到FIN时,可以确保正确接收到ACK并关闭连接。

其次,如果客户端直接关闭,然后启动到服务器的新连接,则不能保证新连接的端口号与刚刚关闭的连接的端口号不同。这意味着新连接和旧连接可能具有相同的端口号。通常不会出错,但也有特殊情况:假设新连接的端口号与已关闭的旧连接的端口号相同。如果前一个连接中的一些数据仍然卡在网络中,那么延迟的数据将不会到达服务器,直到建立新的连接。由于新连接的端口号与旧连接的端口号相同,并且TCP协议根据套接字对确定不同的连接,因此,TCP假定延迟的数据属于新连接,将其与新连接的实际数据包混淆。因此,TCP连接必须在TIME_WAIT状态下等待2倍MSL,以确保连接中的所有数据都从网络中删除。

本文主要介绍了关于什么是tcp/ip协议(TCP/IP协议详解)的相关养殖或种植技术,栏目还介绍了该行业生产经营方式及经营管理,关注发展动向,注重系统性、科学性、实用性和先进性,内容全面新颖、重点突出、通俗易懂,全面给您讲解技术怎么管理的要点,是您致富的点金石。
以上文章来自互联网,不代表本人立场,如需删除,请注明该网址:http://23.234.50.4:8411/article/1536557.html