哪些协议是通过jdk套接字实现的

哪些协议是通过jdk套接字实现的

问题描述:

如果我理解正确,我们使用java.io/java.nio.*来实现一个应用程序,该应用程序应该是ISO 5层模型(可能不准确)的应用程序层实现。我认为JDK应该实现下层(传输层,网络层甚至L2,L1),如果是这样,哪些协议是基于的。如果不是,请介绍一下?哪些协议是通过jdk套接字实现的

也许你对它有非常基本的理解,所以很多事情都会让人困惑。当提供应用层(OSI第7层)或套接字(套接字比应用层低一点,因为你可以在其上创建http,ftp等)时,它们确实拥有所有较低层的java.nio等也实施。如果没有较低层,您实际上无法发送单个数据包,因此无法进行通信。

程序员是否有权访问这些图层以及您可以自定义的级别是另一回事。

通常的标准是socket API,它提供了很多选项来指定较低层(tcp,udp或raw)。

另外,大多数高级语言提供应用层实现如HTTP,SMTP等

+0

如果我理解你的意见,插座是一个抽象的高层次的沟通实现,这是具有与每个协议和每一层并不确切关系,我们可以使用套接字API/*也许有一个API xxx.sendUdpDatagram():-)。但实际上我从来没有在JDK中看到过这样的一个:-(。* /)来指定我们想要使用的协议(主要是我们选择的传输层协议,例如UDP,TCP等)。因此,我们可以随时对于我们的应用程序而言,不同的语言提供了不同的套接字API,并且每个套接字API最相似。 –

+1

您在创建套接字时通常选择tcp或udp,或者通常您有不同的api来创建tcp vs udp http:/ /docs.oracle.com/javase/1.4.2/docs/api/java/net/Socket.html,然后使用缓冲输入流读取器或写入器读取或写入套接字。当我们说api时,重点是该函数处理所有低层工作,你不必担心添加tcp头,计算其校验和,排序(你只需指定tcp),也不必担心添加ip或以太网头。这是自动管理由插座api – fayyazkl

+0

查看Richard Stevens TCP/IP Ill ustrated vol。仅仅第一章就会改善你的许多观念。 – fayyazkl