工具TCP/IP协议
Posted 码上加油站
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了工具TCP/IP协议相关的知识,希望对你有一定的参考价值。
TCP/IP(TransmissionControlProtocol/InternetProtocol,传输控制协议/网际协议)是指能够在多个不同网络间实现信息传输的协议簇。
TCP/IP协议不仅仅指的是TCP和IP两个协议,而是指一个由FTP、SMTP、TCP、UDP、IP等协议构成的协议簇,只是因为在TCP/IP协议中TCP协议和IP协议最具代表性,所以被称为TCP/IP协议。
TCP/IP 是因特网的通信协议。
TCP/IP 通信协议是对计算机必须遵守的规则的描述,只有遵守这些规则,计算机之间才能进行通信。
在 TCP/IP 内部
在 TCP/IP 中包含一系列用于处理数据通信的协议:
TCP (传输控制协议) - 应用程序之间通信
UDP (用户数据报协议) - 应用程序之间的简单通信
IP (网际协议) - 计算机之间的通信
ICMP (因特网消息控制协议) - 针对错误和状态
DHCP (动态主机配置协议) - 针对动态寻址
TCP 使用固定的连接
TCP 用于应用程序之间的通信。
这个全双工的通信将占用两个计算机之间的通信线路,直到它被一方或双方关闭为止。
UDP 和 TCP 很相似,但是更简单,同时可靠性低于 TCP。
IP 是无连接的
IP 用于计算机之间的通信。
IP是无连接的通信协议。它不会占用两个正在通信的计算机之间的通信线路。这样,IP就降低了对网络线路的需求。每条线可以同时满足许多不同的计算机之间的通信需要。
通过IP,消息(或者其他数据)被分割为小的独立的包,并通过因特网在计算机之间传送。
IP 负责将每个包路由至它的目的地。
IP 路由器
当一个 IP 包从一台计算机被发送,它会到达一个 IP 路由器。
IP 路由器负责将这个包路由至它的目的地,直接地或者通过其他的路由器。
在一个相同的通信中,一
个包所经由的路径可能会和其他的包不同。而路由器负责根据通信量、网络中的错误或者其他参数来进行正确地寻址。
概述
TCP/IP 使用 32 个比特或者 4 组 0 到 255 之间的数字来为计算机编址。
每组数字必须在 0 到 255 之间,并由点号隔开,比如:192.168.1.60。
32 比特 = 4 字节
TCP/IP 使用 32 个比特来编址。一个计算机字节是 8 比特。所以 TCP/IP 使用了 4 个字节。
一个计算机字节可以包含 256 个不同的值:
00000000、00000001、00000010、00000011、
00000100、00000101、00000110、00000111、
00001000 ....... 直到 11111111
IP V6
Pv6 是 "Internet Protocol Version 6" 的缩写,也被称作下一代互联网协议,它是由 IETF 小组(Internet 工程任务组Internet Engineering Task Force)设计的用来替代现行的 IPv4(现行的)协议的一种新的 IP 协议。
686E:8C64:FFFF:FFFF:0:1180:96A:FFFF
冒号十六进制记法允许零压缩,即一串连续的0可以用一对冒号取代,例如:
FF05:0:0:0:0:0:0:B3可以定成:FF05::B3
冒号十六进制记法结合有点十进制记法的后缀。这种结合在IPv4向IPv6换阶段特别有用。例如,下面的串是一个合法的冒号十六进制记法:
0:0:0:0:0:0:128.10.1.1
这种记法中,虽然冒号所分隔的每一个值是一个16位的量,但每个分点十进制部分的值则指明一个字节的值。再使用零压缩即可得出:
::128.10.1.1
域名
12 个阿拉伯数字很难记忆。使用一个名称更容易。
当你键入一个像 http://www.baidu.com 这样的域名,域名会被一种 DNS 程序翻译为数字。
子网掩码
子网掩码的计算
1)利用子网数来计算
在求子网掩码之前必须先搞清楚要划分的子网数目,以及每个子网内的所需主机数目。
(1) 将子网数目转化为二进制来表示;
(2) 取得该二进制的位数,为N;
该二进制为五位数,N = 5
2)利用主机数来计算
(1) 将主机数目转化为二进制来表示;
700=1010111100
该二进制为十位数,N=10;
11111111.11111111.11111100.00000000
10+1+1+1=13
因为13小于16(16等于2的4次方),所以主机位为4位。而256-16=240,所以该子网掩码为255.255.255.240。
如果一个子网有14台主机,
协议族
TCP/IP 是基于 TCP 和 IP 这两个最初的协议之上的不同的通信协议的大集合。
TCP - 传输控制协议
TCP 用于从应用程序到网络的数据传输控制。
TCP负责在数据传送之前将它们分割为IP包,然后在它们到达的时候将它们重组。
IP - 网际协议(Internet Protocol)
IP 负责计算机之间的通信。
IP 负责在因特网上发送和接收数据包。
HTTP - 超文本传输协议(Hyper Text Transfer Protocol)
HTTP 负责 web 服务器与 web 浏览器之间的通信。
HTTP 用于从 web 客户端(浏览器)向 web 服务器发送请求,并从 web 服务器向 web 客户端返回内容(网页)。
HTTPS - 安全的 HTTP(HTTP Secure)
HTTPS 负责在 web 服务器和 web 浏览器之间的安全通信。
作为有代表性的应用,HTTPS 会用于处理信用卡交易和其他的敏感数据。
SSL - 安全套接字层(Secure Sockets Layer)
SSL 协议用于为安全数据传输加密数据。
SMTP - 简易邮件传输协议(Simple Mail Transfer Protocol)
SMTP 用于电子邮件的传输。
MIME - 多用途因特网邮件扩展(Multi-purpose Internet Mail Extensions)
MIME 协议使 SMTP 有能力通过 TCP/IP 网络传输多媒体文件,包括声音、视频和二进制数据。
IMAP - 因特网消息访问协议(Internet Message Access Protocol)
IMAP 用于存储和取回电子邮件。
POP - 邮局协议(Post Office Protocol)
POP 用于从电子邮件服务器向个人电脑下载电子邮件。
FTP - 文件传输协议(File Transfer Protocol
FTP 负责计算机之间的文件传输。
NTP - 网络时间协议(Network Time Protocol
NTP 用于在计算机之间同步时间(钟)。
DHCP - 动态主机配置协议(Dynamic Host Configuration Protocol)
SNMP - 简单网络管理协议(Simple Network Management Protocol)
SNMP 用于计算机网络的管理。
LDAP - 轻量级的目录访问协议(Lightweight Directory Access Protocol)
ICMP - 因特网消息控制协议(Internet Control Message Protocol
ICMP 负责网络中的错误处理。
BOOTP - 自举协议(Boot Protocol)
BOOTP 用于从网络启动计算机。
PPTP - 点对点隧道协议(Point to Point Tunneling Protocol
PPTP 用于私人网络之间的连接(隧道)。
SMTP - 简单邮件传输协议
SMTP 协议用于传输电子邮件。SMTP 负责把邮件发送到另一台计算机。
通常情况下,邮件会被送到一台邮件服务器(SMTP 服务器),然后被送到另一台(或几台)服务器,然后最终被送到它的目的地。
SMTP 也可以传送纯文本,但是无法传输诸如图片、声音或者电影之类的二进制数据。
SMTP 使用 MIME 协议通过 TCP/IP 网络来发送二进制数据。MIME 协议会将二进制数据转换为纯文本。
POP - 邮局协议
POP 协议被邮件程序用来取回邮件服务器上面的邮件。
假如您的邮件程序使用POP,那么一旦它连接上邮件服务器,您的所有的邮件都会被下载到邮件程序中(或者称之为邮件客户端)。
IMAP - 因特网消息访问协议
与 POP 类似,IMAP 协议同样被邮件程序使用。
IMAP协议与POP协议之间的主要差异是:如果IMAP连上了邮件服务器,它不会自动地将邮件下载到邮件程序之中。
IMAP使您有能力在下载邮件之前先通过邮件服务器端查看他们。通过 IMAP,您可以选择下载这些邮件或者仅仅是删除它们。比方说您需要从不同的位置访问邮件服务器,但是仅仅希望回到办公室的时候再下载邮件,IMAP 在这种情况下会很有用。
TCP/IP协议中的四个层次
应用层:应用层是TCP/IP协议的第一层,是直接为应用进程提供服务的。
(1)对不同种类的应用程序它们会根据自己的需要来使用应用层的不同协议,邮件传输应用使用了SMTP协议、万维网应用使用了HTTP协
运输层:作为TCP/IP协议的第二层,运输层在整个TCP/IP协议中起到了中流砥柱的作用。且在运输层中,TCP和UDP也同样起到了中流砥柱的作用。
网络接口层:在TCP/IP协议中,网络接口层位于第四层。由于网络接口层兼并了物理层和数据链路层所以,网络接口层既是传输数据的物理媒介,也可以为网络层提供一条准确无误的线路。
图解
图解
注:seq:"sequance"序列号;ack:"acknowledge"确认号;SYN:"synchronize"请求同步标志;;ACK:"acknowledge"确认标志";FIN:"Finally"结束标志。
TCP连接建立过程
首先Client端发送连接请求报文,Server段接受连接后回复ACK报文,并为这次连接分配资源。Client端接收到ACK报文后也向Server段发生ACK报文,并分配资源,这样TCP连接就建立了。
TCP连接断开过程
假设Client端发起中断连接请求,也就是发送FIN报文。Server端接到FIN报文后,意思是说"我Client端没有数据要发给你了",但是如果你还有数据没有发送完成,则不必急着关闭Socket,可以继续发送数据。所以你先发送ACK,"告诉Client端,你的请求我收到了,但是我还没准备好,请继续你等我的消息"。这个时候Client端就进入FIN_WAIT状态,继续等待Server端的FIN报文。当Server端确定数据已发送完成,则向Client端发送FIN报文,"告诉Client端,好了,我这边数据发完了,准备好关闭连接了"。Client端收到FIN报文后,"就知道可以关闭连接了,但是他还是不相信网络,怕Server端不知道要关闭,所以发送ACK后进入TIME_WAIT状态,如果Server端没有收到ACK则可以重传。",Server端收到ACK后,"就知道可以断开连接了"。Client端等待了2MSL后依然没有收到回复,则证明Server端已正常关闭,那好,我Client端也可以关闭连接了。Ok,TCP连接就这样关闭了!
为什么要三次握手?
只有两次"握手"的情形下,假设Client想跟Server建立连接,但是却因为中途连接请求的数据报丢失了,故Client端不得不重新发送一遍;这个时候Server端仅收到一个连接请求,因此可以正常的建立连接。但是,有时候Client端重新发送请求不是因为数据报丢失了,而是有可能数据传输过程因为网络并发量很大在某结点被阻塞了,这种情形下Server端将先后收到2次请求,并持续等待两个Client请求向他发送数据...问题就在这里,Cient端实际上只有一次请求,而Server端却有2个响应,极端的情况可能由于Client端多次重新发送请求数据而导致Server端最后建立了N多个响应在等待,因而造成极大的资源浪费!所以,"三次握手"很有必要!
为什么要四次握手?
试想一下,假如现在你是客户端你想断开跟Server的所有连接该怎么做?第一步,你自己先停止向Server端发送数据,并等待Server的回复。但事情还没有完,虽然你自身不往Server发送数据了,但是因为你们之前已经建立好平等的连接了,所以此时他也有主动权向你发送数据;故Server端还得终止主动向你发送数据,并等待你的确认。其实,说白了就是保证双方的一个合约的完整执行!
使用TCP的协议:FTP(文件传输协议)、Telnet(远程登录协议)、SMTP(简单邮件传输协议)、POP3(和SMTP相对,用于接收邮件)、HTTP协议等。
完
以上是关于工具TCP/IP协议的主要内容,如果未能解决你的问题,请参考以下文章