TCP/IP五层模型

本文介绍了网络协议,它是计算机间通信的约定和共同标准。阐述了协议分层的好处,重点介绍了OSI七层模型和TCP/IP四(五)层模型,包括各层功能,如应用层负责应用程序沟通,物理层界定连接器和网线规格等,还说明了不同网络设备实现的层次。

认识协议

“协议”是一种约定。
计算机之间传输媒介是光信号和电信号,通过“频率“和”“强弱”来表示0、1这样的信息,想要传递不同的信息,需要约定好双方的数据格式。
网络协议是一个共同标准,大家都来遵守。
为了让两台主机通信,需要协议和标准的数据格式才能进行通信。

协议分层(分层最大的好处就是便于封装)

OSI七层模型:

1、OSI七层网络模型称为开发式系统互联网参考模型,是一个逻辑上的定义和规范;
2、把网络从逻辑上分为七层,每一层都有相应的物理设备
3、OSI七层网络模型是一种框架式的设计方法,最主要的功能就是帮助不同类型的主机实现数据传输;
4、最大的优点就是将服务、接口和协议三个概念明确的区分起来
5、复杂且不实用;经常使用的是TCP/IP四层模型。

各部分及功能:

1、应用层:针对你特定应用的协议
2、表示层:设备固定的数据格式和网络标准数据格式之间的转化
3、会话层:通信管理,负责建立和单开通信连接,管理传输层 以下分层
4、传输层:管理两个节点之间的数据传递。负责可靠传输
5、网络层:地址管理和路由选择
6、数据链路层:互联设备之间传送和识别数据帧
7、物理层:界定连接器和网线之间的规格

TCP/IP四(五)层模型。

每一层都呼叫它的下一层提供的网络来完成自己的需求。(如果是四层模型数据链路层和物理层在一层)
1、物理层:负责光电信号传递方式。集线器工作在物理层。以太网协议。
2、数据链路层:负责设备之间的数据帧的传输和识别。交换机工作在数据链路层。例如网卡设备的驱动,帧同步,冲突检测,数据差错校验等工作。
3、网络层:负责地址管理和路由选择。路由器工作在网络层。
4、传输层:负责两台主机之间的数据传输。
5、应用层:负责应用程序之间的沟通。网络编程主要针对的就是应用层。

传输层和网络层的封装在操作系统完成。应用层的封装在应用程序中完成。
数据链路层和物理层的封装在设备驱动程序与网络接口中完成。

关系:

一般而言:
* 对于一台主机,它的操作系统内核实现了传输层到物理层的内容
* 对于一台路由器,它实现了从网络层到物理层
* 对于一台交换机,它实现了由数据链路层到物理层
* 对于集线器,他只实现了物理层。

### TCP/IP 五层模型详解 #### ### 1. 物理层 (Physical Layer) 物理层负责定义硬件设备之间传输比特流的方式,包括电缆、连接器、信号电平和调制技术等内容。这一层的主要职责是确保原始数据能够在物理介质上传输[^3]。 ```java // Java代码示例:模拟二进制数据发送 public class PhysicalLayer { public static void sendBits(String bits) { System.out.println("Sending binary data: " + bits); } } ``` #### ### 2. 数据链路层 (Data Link Layer) 数据链路层建立在物理层之上,主要任务是对帧进行封装与解封,并实现差错控制以及流量管理等功能。MAC地址就是该层的重要概念之一[^1]。 ```java import java.util.UUID; public class DataLinkLayer { private String macAddress = UUID.randomUUID().toString(); public String getMacAddress() { return macAddress; } public void sendDataFrame(byte[] frame){ System.out.println("Transmitting Frame with MAC Address:" + this.macAddress); } } ``` #### ### 3. 网络层 (Network Layer) 网络层解决了跨多个节点传递信息的问题,其中最重要的协议便是IP(Internet Protocol),它提供了逻辑寻址方案以便于定位任意两台主机的位置关系。此外还涉及路由选择算法等关键技术点[^3]。 ```java public class NetworkLayer { private final String ipAddress; public NetworkLayer(String ipAddr){ this.ipAddress=ipAddr; } public String getIpAddress(){ return ipAddress ; } public void routePacket(String destinationIp, byte [] packet ){ System .out .println ("Routing Packet from "+this.getIpAddress()+" to "+destinationIp ); } } ``` #### ### 4. 传输层 (Transport Layer) 传输层屏蔽了底层网络细节并向应用程序提供透明的服务接口,典型代表有面向连接的TCP(Transmission Control Protocol) 和无连接的 UDP(User Datagram Protocol)[^1] 。前者保证了端到端通信可靠性,后者则侧重效率而不关心丢包重传等问题。 ```java public abstract class TransportLayer { protected int sourcePort; protected int destPort; public TransportLayer(int srcPrt,int dstPrt){ this.sourcePort=srcPrt; this.destPort=dstPrt; } public abstract void establishConnection(); } class TCPLayer extends TransportLayer{ public TCPLayer(int sPort ,int dPort){ super(sPort,dPort); } @Override public void establishConnection(){ System.out.println("Establishing reliable connection via TCP between ports:"+sourcePort+" and "+destPort); } } class UDPLayer extends TransportLayer{ public UDPLayer(int sp,int dp){ super(sp,dp); } @Override public void establishConnection(){ System.out.println("No need to establish connection as using unreliable but fast protocol i.e.,UDP"); } } ``` #### ### 5. 应用层 (Application Layer) 应用层直接面对用户进程,包含了众多高层协议比如HTTP/HTTPS、FTP(File Transfer Protocol)、SMTP(Simple Mail Transfer Protocol)等等,这些协议规定了客户端和服务端交互的具体方式[^2]。 ```java import javax.net.ssl.HttpsURLConnection; import java.io.BufferedReader; import java.io.InputStreamReader; import java.net.URL; public class ApplicationLayerExample { public static void main(String args[]) throws Exception { URL url = new URL("https://www.example.com/"); HttpsURLConnection con = (HttpsURLConnection)url.openConnection(); BufferedReader in = new BufferedReader(new InputStreamReader(con.getInputStream())); String inputLine; StringBuilder content = new StringBuilder(); while ((inputLine = in.readLine()) != null) { content.append(inputLine).append("\n"); } in.close(); System.out.println(content.toString()); } } ```
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值