TCP/IP协议集详解

 

ip协议

一、应用层

1、Telnet:常用于服务器远程控制,它使用虚拟终端机的形式,提供以字符串命令为主的双向交互功能。由于传统的Telnet会话数据没有加密,目前很多服务器都改用了更安全的SSH

注:SSH (Secure Shell)是一种加密的网络传输协议,通过创建安全隧道来实现客户端与服务器间的连接,常用于远程登录系统

2、FTP(文件传输协议 File Transfer Protocol):是一个8位的客户端-服务器协议,FTP的缺点是有极高的延时。

FTP服务一般运行在20与21端口,20用于传输数据流,21用于传输控制流。

//运行FTP服务的许多站点都开放匿名服务,在这种设置下,用户不需要帐号就可以登录服务器,默认情况下,匿名用户的用户名是:“anonymous”。这个帐号不需要密码,虽然通常要求输入用户的邮件地址作为认证密码,但这只是一些细节或者此邮件地址根本不被确定,而是依赖于FTP服务器的配置情况。(例如携程的注册邮箱名)

3、SMTP(简单邮件传输协议 Simple Mail Transfer Protocol):指定一个消息的接收者(被确认存在),传输消息文本。使用的TCP端口为25。

SMTP是一个“推”协议,不支持从远程服务器“拉”数据,要做到这点,必须使用POP3或者IMAP(如用outlook管理自己的邮箱时,就需要打开邮箱的IMAP功能)。

4、HTTP(超文本传输协议 HyperText Transfer Protocol)

//URL:统一资源标识符,用于标识通过HTTP、HTTPS协议请求的资源

//当前的HTTP实现标准版本为:HTTP/2 (于2015年批准)

客户端(用户代理程序)的请求通常被发送到服务器(源服务器)80端口上,HTTP可以在任何互联网上实现,它假定下层协议提供数据传输,因此在TCP/ip协议中,使用TCP作为传输层。

//收到HTTP请求后,服务器会返回一个状态,通常 200 代表“OK”

(1)HTTP的请求方法

(至少实现GET与HEAD(这两者都属于安全方法,因为它们只用于获取资源信息,而不做其他请求意义),其他方法为可选)

GET “显示”请求,只用于读取数据,GET可被网络蜘蛛等随意访问
HEAD 请求资源,但不传回文本部分,用于在不获取资源全部内容的情况下提取其元信息
POST 上传表单数据等,可以创建或修改资源
PUT 向指定位置传输最新内容
DELETE 请求删除资源
TRACE 显示服务器收到的请求,通常用于测试

//“幂等”的请求:在不考虑诸如错误或者过期等问题的情况下,若干次请求的副作用与单次请求相同或者没有副作用

(2)HTTP/1.0 与 HTTP/1.1的区别

HTTP/1.0在代理服务中仍被广泛使用

HTTP/1.1后引入持续连接机制,此前TCP连接在每次请求/回应后关闭,多次运行TCP交握程序会延长等待时间

HTTP/1.1支持在应答前持续发送请求(通常为2个),称为“流线化”

HTTP/1.1相较与HTTP/1.0的区别在于——

缓存处理
带宽优化以及网络连接的使用(默认使用持久连接)(通过引入分块传输编码、管道等改进带宽、滞后感)
错误通知的管理
消息在网络中的发送
互联网地址的维护

安全性与完整性

(3)状态码

1XX 消息 请求已被服务器接收,继续处理
2XX 成功 请求已被服务器成功接收、理解
3XX 重定向 请求仍需要后续操作
4XX 请求错误 词法错误或者无法被执行
5XX 服务器错误 在处理某个正确请求时,服务器发生错误

//405 ——资源不支持请求方法

//501 ——服务器不支持请求方法

//请求行和标题必须以作为结尾。空行内必须只有而无其他空格。在HTTP/1.1协议中,所有的请求头,除Host外,都是可选的。

5、DNS域名系统 Domain Name System)

实际上是一个提供 域名与IP地址 的相互映射的数据库。通常使用TCP与UDP的端口53,域名的总长度不能超过253字符,每一级域名长度不能超过63字符。

DNS查询的两种方法:

(1)递归:DNS客户端常用一般是递归服务器

(2)迭代:DNS服务器间通常采用迭代查询方式

//图片来源于https://zh.wikipedia.org/wiki/%E5%9F%9F%E5%90%8D%E7%B3%BB%E7%BB%9F

二、传输层

1、TCP(传输控制协议 Transmission Control Protocol)

TCP协议是一种基于字节流的传输层通信协议

应用层向TCP层发送用于网间传输的、用8位字节表示的数据流,然后TCP把数据流分区成适当长度的报文段(通常受该计算机连接的网络的数据链路层的最大传输单元(MTU)的限制)。之后TCP把结果包传给IP层(IP层提供不可靠的包交换)。

TCP为了保证不发生丢包,就给每个包一个序号,同时序号也保证了传送到接收端实体的包的按序接收。

接收端实体会对已成功收到的包发回一个相应的确认(ACK);如果发送端实体在合理的往返时延(RTT)内未收到确认,那么对应的数据包就被假设为已丢失将会被进行重传。

(1)TCP创建连接(三次握手)

客户端通发送一个SYN并且把这段连接的序号设定为随机数A→

服务器端为合理的SYN返回一个SYN/ACK包,ACK的确认码为 A+1,同时这个包本身又带有一个随机产生的xu序号B→

客户端收到包后再次发送一个ACK,服务器收到这个ACK后,连接就建立了

此时,包序号为A+1,响应号为B+1

linux中,若没有收到最后的ACK,服务器会重复发送SYN/ACK包(默认发送五次),若总共经过63s后无回应,就会断开连接。

(2)可靠传输:发送与接收时包都有序列号,通过接收方返回的ACK包可以确认对方已经接收的数据字节位置,发送方通过检测丢失的传输数据并且重新传输他们,确保了数据传输的可靠性。

(3)超时重传

(4)校验和(16位)

TCP校验和也包括了96位的伪头部,其中有源地址、目的地址、协议以及TCP的长度

(5)TCP的现代实现包含四种相互影响的拥塞控制算法: 慢开始, 拥塞避免, 快重传, 快恢复

(6)选择确认(SACK):允许接收方确认它成功收到的分组不连续块

(7)连接终止(四次握手)

(8)状态编码

2、UDP(用户数据报协议 User Datagram Protocol)

UDP是不可靠的数据报协议,因为UDP不需要应答,所以它的来源端口可选。由于缺乏可靠性且属于非连接导向协议,UDP应用一般必须允许一定量的丢包、出错和复制粘贴。

媒体是典型的UDP应用。

三、网络层

1、IP(网络协议Internet Protocol)

//注:IP可以指IP网络协议,也可以指IP地址,这两者是不等的

IP用于分组交换数据,IP的第一个架构是IPv4,它仍然是最主要的互联网协议,尽管目前世界各地正在积极部署IPv6。

(1)IP封装

数据在IP协议中传送中,被封装为数据报文(数据包=头(控制信息)+负载(信息数据)),IP协议是一种“尽最大努力交付”的数据包传输机制。

将IP地址解析为相应的数据链路地址的方法:IPv4(地址解析协议ARP)、IPv6(邻居发现协议NDP)

(2)可靠性

互联网协议提供的唯一帮助是,IPv4规定通过在路由节点计算校验和来确保IP数据报头是正确的。这个带来的副作用是当场丢弃报头错误的数据报文。在这种情况下不需要发送通知给任一个终端节点,但是互联网控制消息协议(ICMP)中存在一个机制来做到这一点。

但是,IPv6为了快速传输已经放弃了计算校验和的使用。

对这些可靠性问题的更正是一个上层协议的责任。(TCP)

(3)版本

IPv4 有32位地址

IPv6 有128位地址

2、ICMP(互联网控制消息协议)

常用于TCP/IP网络中发送控制消息,ICMP是IP的主要部分,ICMP属于不可靠协议。

3、ARP(地址解析协议,IPv4采用)(Address Resolution)

ARP 通过 解析网路层地址 来寻找 数据链路层地址 ,即通过网络地址(例:IPv4)来定位MAC地址。

在以太网中使用IP协议时,因为在以太网与上层IP协议中,只含有IP地址信息,所以需要ARP协议根据主机的IP地址找到其MAC地址,这就是地址解析。

(1)查看ARP缓存表

windows:在cmd中输入 arp -a

Linux:在shell中输入 arp

/****************************************以太网**********************************************/

以太网是目前应用最普遍的计算机局域网技术

它实现了网络上无线电系统多节点发送信息,每个节点必须获取以太才能传送信息。

在以太网中规定,在局域网中,一台主机如果想跟另一台主机通信,必须知道目标主机的MAC地址。

/*******************************************************************************************/

4、RARP(逆地址解析协议)

用于将MAC地址转换为IP地址

相关阅读

TCP中的RST标志(Reset)详解

 在谈RST攻击前,必须先了解TCP:如何通过三次握手建立TCP连接、四次握手怎样把全双工的连接关闭掉、滑动窗口是怎么传输

简述TCP的三次握手过程

所谓三次握手(Three-Way Handshake)即建立TCP连接,就是指建立一个TCP连接时,需要客户端和服务端总共发送3个包以确认连接的建立。在so

TCP协议

一、TCP协议1.网络模型1)七层网络模型层数名字主要功能对应的典型设备传输单位7应用层提供应用程序间通信计算机:应用程序,如FTP、SM

关于TCP/IP,必须知道的十个知识点

本文整理了一些TCP/IP协议簇中需要必知必会的十大问题,既是面试高频问题,又是程序员必备基础素养。一、TCP/IP模型TCP/IP协议模型(Tr

C语言通过socket编程实现TCP通信

服务端客户端通信例子:socket tcp 通信1,socket tcp通信2,udp使用讲解,socket udp通信例子 1.  TCP/IP协议 叫做传输控制/网际协议,又

发表评论