JavaWeb笔记13:TCP/IP协议簇

TCP/IP协议簇

TCP/IP 并不一定是单指 TCP 和 IP 这两个具体的协议,而往往是表示互联网所使用的整个 TCP/IP 协议簇。
在这里插入图片描述
注:
TCP(传输控制协议)和IP(网际协议) 是最先定义的两个核心协议,所以才统称为TCP/IP协议族。

1 计算机网络体系结构

局域网(Local Area Network)——LAN
广域网(Wide Area Network)——WAN

组网/联网设备:

  • 集线器(hub)
  • 交换机(switch)
  • 路由器(route)

OSI(Open System Interconnection,开放系统互联)七层协议:应用层、表示层、会话层、网络层、传输层、数据链路层、物理层
在这里插入图片描述

TCP/IP五层模型:TCP/IP是一组协议的代名词,是由很多协议组成的TCP/IP协议簇
在这里插入图片描述
图片来源:OSI七层模型

从实质上讲,TCP/IP 只有最上面的三层,因为最下面的网络接口层并没有什么具体内容,因此在学习计算机网络的原理时往往采用折中的办法,即综合 OSI 和 TCP/IP 的优点,采用一种只有五层协议的体系结构:

物理层:解决直接相连的结点通信问题
数据链路层:解决局域网内结点的通信问题
网络层:解决结点和结点(局域网或广域网中的结点)通信问题(IP协议)
传输层:解决进程与进程间的通信问题(端对端)(TCP协议)
应用层:具体的业务内容

有时为了方便,也可把最底下物理层、数据链路层合称为网络接口层

注意:
五层协议的体系结构只是为了介绍网络原理而设计的,实际应用还是 TCP/IP 四层体系结构即应用层、运输层、网络层、网络接口层

2 应用层协议

应用层协议定义的是应用进程间的通信和交互的规则。

对于不同的网络应用需要不同的应用层协议:域名系统 DNS,支持万维网应用的 HTTP 协议,支持电子邮件的 SMTP 协议等等。

(1) HTTP

HTTP(Hyper Text Transfer Protocol,超文本传输协议),目的是保证浏览器与服务器之间的通信。HTTP的工作方式是客户端与服务器之间的请求-应答协议。

客服端发送的请求报文是由请求方法、请求URI、协议版本、请求首部字段(可选)、内容实体(可选)构成。
55

服务器收到请求后,会将请求的处理结果以响应的形式返回:
响应报文基本上由协议版本、状态码(表示请求成功或失败的数字代码)、用以解释状态码的原因短语、可选的响应首部字段以及实体主体构成。
44

注意:
HTTP是一种不保存状态,即无状态(stateless)协议,对发送过的请求或响应都不做持久化处理。网站为了能够掌握是谁发送出的请求,需要保存用户的状态,因此引入了Cookie技术,对用户状态进行管理。

对于一些告知服务器意图的HTTP方法:
66
HTTP协议中定义了浏览器和服务器进行交互的不同方法,基本方法有4种,分别是GET,POST,PUT,DELETE。这四种方法可以理解为,对服务器资源的查,改,增,删。

GET:从服务器上获取数据,也就是所谓的查,仅仅是获取服务器资源,不进行修改。
POST:向服务器提交数据,这就涉及到了数据的更新,也就是更改服务器的数据。
PUT:英文含义是放置,也就是向服务器新添加数据,就是所谓的增。
DELETE:从字面意思也能看出,这种方式就是删除服务器数据的过程。
HEAD:获得报文首部

注:
报文首部:请求首部(请求行,请求字段)、响应首部(响应行,响应字段)

(2) URL

URI(Unique Resource Identifier)统一资源标识符
URL(Unique Resource Location)统一资源定位符

URI用字符串标识某一互联网资源,而URL表示资源在互联网上所处的位置。URL是URI的一个子集。
8
绝对URI的格式:
8
1: 协议方案名:不区分大小写,最后附一个冒号
2: 登录信息(认证):指定用户名和密码作为从服务器获取资源时必要的登录信息(可选)
3: 服务器地址:待访问服务器的地址(必须指出)
4: 服务器端口号:用户省略时会自动使用默认端口号
5: 带层次的文件路径:指定服务器上的文件路径来定位特指的资源。
6: 查询字符串:针对已指定的文件路径内的资源,可以使用查询字符串传入任意参数(可选)
7: 片段标识符:可标记出已获取资源中的子资源。(可选)

一些特殊的字符会影响URL的解析过程,所以对于一些特殊字符,需要进行URL编码:
Java中的url编码:

String url = "中";
String urlEncoded = URLEncoder.encode(url, "UTF-8");
System.out.println(urlEncoded);
url = URLDecoder.decode(urlEncoded, "UTF-8");
System.out.println(url);
(3) 常见状态码:
状态码类别原因
1XXInformational(信息性状态码)接收的请求正在处理
2XXSuccess(成功状态码)请求正常处理完毕
3XXRedirection(重定向状态码)需要进行附加操作以完成请求
4XXClient Error客户端错误状态码服务器无法处理的请求
5XXServer Error(服务器错误状态码)服务器请求处理出错

注意:
200 OK 一切正常
301 Moved Permanently 永久移走
302 Move temporarily 临时移走
307 Temporary Redirect 临时重定向
404 Not Found 请求的资源不存在
500 Internal Server Error 服务器内部错误

参考博客:HTTP常用的14种状态码(转发和重定向)

2 传输层

传输层(transport layer)的主要任务就是负责向两台主机进程之间的通信提供通用的数据传输服务应用进程利用该服务传送应用层报文

传输层主要使用以下两种协议
传输控制协议-TCP:提供面向连接的,可靠的数据传输服务。
用户数据协议-UDP:提供无连接的,尽最大努力的数据传输服务(不保证数据传输的可靠性)。

(1)运行在TCP协议上的协议:

HTTP(Hypertext Transfer Protocol,超文本传输协议)主要用于普通浏览
HTTPS(HTTP over SSL,安全超文本传输协议)HTTP协议的安全版本
FTP(File Transfer Protocol,文件传输协议)用于文件传输。
POP3(Post Office Protocol, version 3,邮局协议):收邮件用。
SMTP(Simple Mail Transfer Protocol,简单邮件传输协议):用来发送电子邮件。
TELNET(Teletype over the Network,网络电传):通过一个终端(terminal)登陆到网络。
SSH(Secure Shell,用于替代安全性差的TELNET)用于加密安全登陆用

(2)运行在UDP协议上的协议:

BOOTP(Boot Protocol,启动协议):应用于无盘设备。
NTP(Network Time Protocol,网络时间协议):用于网络同步。
DHCP(Dynamic Host Configuration Protocol,动态主机配置协议)动态配置IP地址。

(3)运行在TCP和UDP协议上:

DNS(Domain Name Service,域名服务)用于完成地址查找,邮件转发等工作。

3 网络层

网络层的任务就是选择合适的网间路由和交换结点,确保计算机通信的数据及时传送。在发送数据时,网络层把运输层产生的报文段或用户数据报封装成分组和包进行传送。在 TCP/IP 体系结构中,由于网络层使用 IP 协议(IPv4/ IPv6),因此分组也叫 IP 数据报 ,简称数据报。

互联网是由大量的异构(heterogeneous)网络通过 路由器(router) 相互连接起来的。互联网使用的网络层协议是无连接的网际协议(Intert Prococol)和许多路由选择协议,因此互联网的网络层也叫做网际层或 IP 层

(1)路由的作用:
  • 在网络层重新加工数据(主要重新加工源MAC+目标MAC地址)
  • 根据源ip+目标IP,确定中转过程中的MAC地址。

注意:
MAC地址主要用来识别数据链路层中相邻的节点。

4 数据链路层

数据链路层(data link layer)通常简称为链路层。两台主机之间的数据传输,总是在一段一段的链路上传送的,这就需要使用专门的链路层的协议。

在两个相邻节点之间传送数据时,数据链路层将网络层中的 IP 数据报组装成帧,在两个相邻节点间的链路上传送帧。每一帧包括数据和必要的控制信息(如同步信息,地址信息,差错控制等)。

(1)数据链路层主要解决的是:

1) 在广播域中保证数据发送给指定结点,取得数据中的目标物理地址(MAC)(MAC地址用来识别数据链路层中相连的节点),和自己的MAC地址进行对比,如果一样就接受,并把数据交给网络层继续处理,否则丢弃。

2) 解决冲突域的问题
如果很多结点同时发送数据,而信道只能发送有限的数据,这就容易造成数据冲突,导致数据拥挤。

(2)数据包封装和分用:

封装(Encapsulation): 应用层数据通过协议栈发到网络上时,每层协议都要加上一个数据首部(header)。首部信息中包含了一些类似于首部有多长, 载荷(payload)有多长, 上层协议是什么等信息。

分用:解包的过程中,每一层都有不同的协议,根据数据首部的协议值选择合适的协议:
0

局域网内部,结点A的应用层是如何发送数据到结点B的应用层?
A:应用层->数据链路层:封装
B:数据链路层->应用层:解包/分用

发送端在层与层之间传输数据时,每经过一层时必定会被打上一个该层所属的 首部信息。反之,接收端在层与层的传输中,每经过一层就会把相应的 首部去掉
1

5 物理层

在物理层上所传送的数据单位是比特物理层(physical layer)的作用是实现相邻计算机节点之间比特流的透明传送,尽可能屏蔽掉具体传输介质和物理设备的差异。

注:
透明传送比特流”表示经实际电路传送后的比特流没有发生变化,对传送的比特流来说,这个电路好像是看不见的。

6 不同层的协议:

网络协议:在计算机网络要做到有条不紊地交换数据,就必须遵守一些事先约定好的规则,比如交换数据的格式、是否需要发送一个应答信息。
在这里插入图片描述
各层所包含的协议:

  • 应用层(决定了向用户提供应用服务时通信的活动):HTTP(Hyper Text Transfer Protocol),DNS(Domain Name System),FTP(File Transfer Protocol)
  • 运输层(提供处于网络链接中的两台计算机之间的数据传输):TCP协议,UDP
  • 网络层(用来处理网络上流动的数据包):IP协议
  • 链路层(用来处理连接网络的硬件部分)

HTTP协议的职责:生成针对目标Web服务器的HTTP请求报文
TCP职责:为方便进程之间的通信,将HTTP请求报文分割成报文段
IP协议:搜索对方地址,一边中转一边传送

(1) 不同的协议层对数据包有不同的称谓:
  • 应用层:请求(Request)——响应(Response)
  • 传输层:UDP(数据报文)(datagram)、TCP(段)(segment)
  • 网路层:包(Packet)
  • 数据链路层(以太网):帧(frame)

注意:

  • 客户端,服务端一般是在应用层上得称谓;
  • 在TCP中一般称主动方和被动方
(2)跨局域网的情况下,结点A的应用层是如何发送数据到结点B的应用层?

通过确定最终目标的源ip和目IP,然后经过多个中间结点(使用源MAC地址+目的MAC确定),最终到达目的地。在进行中转时,会利用下一站中转设备的MAC地址来搜索下一个中转目标。这时会采用ARP协议(Address Resolution Protocol)。

注:
ARP是一种解析地址的协议,根据通信方的Ip地址就可以反查出对应的MAC地址。
4

参考博客:https://blog.csdn.net/ThinkWon/article/details/104903925

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值