TCP模型及其重点协议总结
概述
TCP/IP协议族,作为最早的协议模型(后来OSI七层也是在该基础上细分而来),每层都有一些重点的协议,面试时也会被询问,快要找工作,得做一些总结了
【1】TCP4层协议模型概述
【2】各层重点协议介绍
1、TCP4层协议模型概述
TCP与OSI对比图
其中Tcp各层重点协议如下图所示
网络层协议包括:
【1】IP(Internet Protocol)协议
IP是网络层的核心,通过路由选择将下一条IP封装后交给接口层。IP数据报是无连接服务。
【2】ICMP(Internet Control Message Protocol)控制报文协议
ICMP是网络层的补充,可以回送报文。用来检测网络是否通畅。其中Ping命令就是发送ICMP的echo包,通过回送的echo relay进行网络测试。
【3】ARP(Address Resolution Protocol)地址转换协议
ARP是正向地址解析协议,通过已知的IP,寻找对应主机的MAC地址。
【4】RARP(Reverse ARP)反向地址转换协议。
RARP是反向地址解析协议,通过MAC地址确定IP地址。比如无盘工作站还有DHCP服务。
【5】IGMP协议(Internet Group Management Protocol)
是因特网协议家族中的一个组播协议。该协议运行在主机和组播路由器之间
传输层协议:
【1】TCP(Transmission Control Protocol)传输控制协议
TCP是面向连接的通信协议,通过三次握手建立连接,通讯完成时要拆除连接,由于TCP是面向连接的所以只能用于点对点的通讯。TCP提供的是一种可靠的数据流服务,采用“带重传的肯定确认”技术来实现传输的可靠性。面向流的通信是无消息保护边界的(会出现粘包)
【2】UDP(User Datagram protocol)用户数据报协议
UDP是面向无连接的通讯协议,UDP数据包括目的端口号和源端口号信息,由于通讯不需要连接,所以可以实现广播发送。UDP通讯时不需要接收方确认,属于不可靠的传输,可能会出丢包现象,实际应用中要求程序员编程验证。UDP与TCP位于同一层,但它不管数据包的顺序、 错误或重发。是无连接,面向消息的,面向消息的通信是有消息保护边界的(不会出现粘包)
应用层协议。
【1】FTP(File Transfer Protocol)文件传输协议
一般上传下载用FTP服务,数据端口是20H,控制端口是21H。
【2】Telnet服务是用户远程登录服务,使用23H端口,使用明码传送,保密性差、简单方便。
【3】DNS(Domain Name Service)是域名解析服务,提供域名到IP地址之间的转换,使用端口53。
【4】SMTP(Simple Mail Transfer Protocol)是简单邮件传输协议,用来控制信件的发送、中转,使用端口25。
【5】NFS(Network File System)是网络文件系统,用于网络中不同主机间的文件共享。
【5】HTTP(Hypertext Transfer Protocol)是超文本传输协议,用于实现互联网中的WWW服务,使用端口80。
2、重点协议的使用
2.1、ICMP协议
著名应用:
【1】ping
【2】traceroute
ICMP是网络层的协议,通常ICMP报文被IP层或更高层协议(TCP或UDP)使用。一些ICMP报文把差错报文返回给用户进程。
ICMP报文主要分为俩大类:【查询报文】、【差错报文】
差错报文:
当IP数据发生错误时(主机不可达或者网络故障)ICMP将会发送一个ICMP差错报文给源主机,也是得益于此IP层以上的协议可以做到可靠传输
差错报文主要分为以下5种:
1> 终点不可达:终点不可达分为:网络不可达,主机不可达,协议不可达,端口不可达,需要分片但DF比特已置为1,以及源路由失败等六种情况,其代码字段分别置为0至5。当出现以上六种情况时就向源站发送终点不可达报文。
Note:端口不可达:UDP的规则之一是:如果收到UDP数据报而且目的端口与某个正在使用的进程不相符,那么UDP返回一个ICMP不可达报文。其中Treaceroute就是利用端口不可达来产生ICMP差错报文的
2> 源站抑制:当路由器或主机由于拥塞而丢弃数据报时,就向源站发送源站抑制报文,使源站知道应当将数据报的发送速率放慢。
3> 时间超过:当路由器收到生存时间为零的数据报时,除丢弃该数据报外,还要向源站发送时间超过报文。当目的站在预先规定的时间内不能收到一个数据报的全部数据报片时,就将已收到的数据报片都丢弃,并向源站发送时间超过报文。
4> 参数问题:当路由器或目的主机收到的数据报的首部中的字段的值不正确时,就丢弃该数据报,并向源站发送参数问题报文。
5> 改变路由(重定向)路由器将改变路由报文发送给主机,让主机知道下次应将数据报发送给另外的路由器。
Note:
【Traceroute程序】
Traceroute是ICMP协议的另一个重要应用,主要用来侦测源主机到目的主机之间所经过的路由的情况。Traceroute使用ICMP报文和 IP首部中的TTL字段,其原理很简单,开始时发送一个TTL字段为1的UDP数据报,而后每次收到ICMP超时报文后,再发送一个TTL字段加1的 UDP数据报,以确定路径中的每个路由器,而每个路由器在丢弃UDP数据报时都会返回一个ICMP超时报文,最终到达目的主机后,由于ICMP选择了一个
不可能的值作为UDP端口(大于30000)。这样目的主机就会发送一个端口不可达的ICMP差错报文。
查询报文
查询报文主要用途有4种:
回送请求和回答,时间戳请求和回答,掩码地址请求和回答,以及路由器询问和通过。
Ping就是利用查询报文的回送请求和应答来实现的具体见下。
【Ping程序】
ping是ICMP的一个很著名的应用。ping程序时对两个TCP/IP系统连通性进行测试的基本工具,它只利用ICMP回显请求和回显应答报文,而不 用经过传输层,ping服务器一般在内核中试下ICMP的功能。当某一个网站访问不了时,我们就可以ping一下这个网站,看下连通情况。
2.2 ARP协议过程
首先ARP协议只用于局域网(外网则需要DNS解析),它用来将IP地址解析为MAC地址
局域网中的每个主机都有一个ARP缓存,它保存了最近发起的IP地址到 MAC地址的映射记录,当该主机要向局域网中的某一主机发送数据时,它会先从自己的缓存中查找,看是否存在目标IP地址,如果找到,就通过映射找到它的 MAC地址,从而发送过去,如果没有找到该目的IP地址,它就向该局域网内发送一个广播,广播中包含自己的IP地址、MAC地址和目的主机的IP地址,局
域网内的所有主机都会收到该广播,但只有目的IP地址的主机会做出回应,并把自己的MAC地址发送给源主机,源主机收到后,在自己的ARP缓存中增加上该 映射,并根据发来的MAC地址将数据发送给目的主机。 ARP高速缓存中的表项一般都要设置超时值,如果一段时间内没有与某主机通信,就将该主机对应的IP与MAC之间的映射关系去掉,下次在需要通信时,依然发送广播。
在网上找了一个例子
在上图中,当主机A要和主机B通信(如主机A Ping主机B)时。主机A会先检查其ARP缓存内是否有主机B的MAC地址。如果没有,主机A会发送一个ARP请求广播包,此包内包含着其欲与之通信的主机的IP地址,也就是主机B的IP地址。
当主机B收到此广播后,会将自己的MAC地址利用ARP协议响应包传给主机A,并更新自己的ARP缓存,也就是同时将主机A的IP地址/MAC地址对保存起来,以供后面使用。主机A在得到主机B的MAC地址后,就可以与主机B通信了。同时,主机A也将主机B的IP地址/MAC地址对保存在自己的ARP协议缓存内。
其中HTTP协议见我以前的一篇总结HTTP协议小结
TCP模型及其重点协议总结的更多相关文章
- (1)基于tcp协议的编程模型 (2)tcp协议和udp协议的比较 (3)基于udp协议的编程模型 (4)反射机制
1.基于tcp协议的编程模型(重中之重)1.1 编程模型服务器: (1)创建ServerSocket类型的对象,并提供端口号: (2)等待客户端的连接请求,调用accept()方法: (3)使用输入输 ...
- (1)网络编程的常识 (2)基于tcp协议的编程模型 (3)tcp协议和udp协议的比较 (4)基于udp协议的编程模型
1.网络编程的常识 目前主流的网络通讯软件有:微信.QQ.YY.陌陌.探探.飞信.阿里旺旺.... 在吗? 1.1 七层网络模型(熟悉) 为了保证数据传递的可靠安全等等,ISO(国际标准委员会组织)将 ...
- python 全栈开发,Day33(tcp协议和udp协议,互联网协议与osi模型,socket概念,套接字(socket)初使用)
先来回顾一下昨天的内容 网络编程开发架构 B/S C/S架构网卡 mac地址网段 ip地址 : 表示了一台电脑在网络中的位置 子网掩码 : ip和子网掩码按位与得到网段 网关ip : 内置在路由器中的 ...
- OSI七层模型对应的协议
osi七层模型对应的协议 author:headsen chen 2017-10-21 11:44:47 个人原创,转载请注明作者,出处.否则依法追究法律责任 1,物理层:带信号的,同轴电缆, ...
- 计算机网络原理和OSI模型与TCP模型
计算机网络原理和OSI模型与TCP模型 一.计算机网络的概述 1.计算机网络的定义 计算机网络是一组自治计算机的互连的集合 2.计算机网络的基本功能 a.资源共享 b.分布式处理与负载均衡 c.综合信 ...
- HTTP、TCP、IP、协议
HTTP(HyperText Transfer Protocol) 即超文本传输协议,现在基本上所有web项目都遵从HTTP协议(协议就是一种人为的规范). 目前绝大部分使用的都是HTTP/1.1版本 ...
- TCP与UDP传输协议
目录结构: contents structure [-] 1 TCP协议和UDP协议的比较 1.1 TCP协议 TCP的全称是Transmission Control Protocol (传输控制协议 ...
- 网络编程基础socket 重要中:TCP/UDP/七层协议
计算机网络的发展及基础网络概念 问题:网络到底是什么?计算机之间是如何通信的? 早期 : 联机 以太网 : 局域网与交换机 广播 主机之间“一对所有”的通讯模式,网络对其中每一台主机发出的信号都进行无 ...
- http与https与socket tcp/IP与UDP 协议等
网络由下往上分为: 物理层-- 数据链路层-- 网络层-- IP协议 传输层-- ...
随机推荐
- 两个对象用equals方法比较为true,它们的Hashcode值相同吗?
两个对象用equals方法比较为true,它们的Hashcode值相同吗? 答:不一定相同.正常情况下,因为equals()方法比较的就是对象在内存中的值,如果值相同,那么Hashcode值也应该相同 ...
- ubuntu + 不识别无线网卡简易处理方式 + 需有线联网
进入ubuntu, 连接有线网; 系统设置 -> 软件和更新 -> 附加驱动 -> 找到无线网卡驱动并更新 若无候选的无线网卡驱动,我就没招了.
- 线性回归(Linear Regression)均方误差损失函数最小化时关于参数theta的解析解的推导(手写)
第一页纸定义了损失函数的样子, theta, X 和 y 的 shape, 以及最终的损失函数向量表现形式. 第二页纸抄上了几个要用到的矩阵求导公式,以及推导过程和结果. 要说明的是:推导结果与the ...
- 关于centos版本安装ethereum钱包
安装go wget https://studygolang.com/dl/golang/go1.9.linux-amd64.tar.gz --no-check-certificatetar -zxvf ...
- Java课程设计常见技术问题(程序部署、数据库、JSP)
1. 部署方法 Eclipse下打包 右键点击项目-Export-Runnable JAR file,选择正确的Launch configuration,接下来根据提示可以将项目中用到的jar打入包中 ...
- Java日志-Log4j2
Log4j2参考资料 Log4j2 官方配置文档 1. Log4j2基本概念: Logger 在代码中产生日志信息的.比如logger.info("some log message" ...
- Django中过期@cache_page中缓存的views数据
django的缓存系统中,cache_page 这个装饰器非常好用,只要添加一个装饰器就可以缓存views的响应内容,但是django没有提供过期这个views缓存数据的功能. @cache_page ...
- 实例演示如何在spring4.2.2中集成hibernate5.0.2并创建sessionFactory
本文地址:http://blog.csdn.net/sushengmiyan/article/details/49388209 文章作者:苏生米沿 本文目的:使用spring4.2.2集成hibern ...
- 深入Java虚拟机(1)——Java体系结构
Java体系结构 Java体系结构包括四个独立但相关的技术: 1.Java程序设计语言 2.Java class文件格式 3.Java应用编程接口(API) 4.Java虚拟机 当编写并运行一个Jav ...
- Android初级教程:RatingBar的使用
记得淘宝里面买家给卖家评分的时候会有一个星星状的评分条,其实就是基于RatingBar做了自定义使用了.那么本篇文章就对RatingBar的使用做一个基本的认识. 接下来就是正题,那就是对于Ratin ...