嗯,首先,我对人际关系很陌生。
研究了tcp/ip协议栈的分层结构。
我知道分层结构是一个抽象的模型,但我不知道协议栈是如何在操作系统中实现的。
如何创建HTTP消息?
TCP在哪里生存,如何在传输层分割数据?等等。
请帮助我,纠正我错的地方
发布于 2018-04-24 17:57:33
堆栈中的每个层都有自己的功能,所有层一起形成完整的功能,即“堆栈”。
以太网(物理层和数据链路层)在本地段内的帧中传输分组数据。虽然这一段的物理尺寸可以是很多公里,但它通常是更有限的,例如,一栋建筑物。
IP (网络层)使用此功能,并将逻辑地址放在可以在全局范围内路由的顶层。它的IP包被包装在以太网帧中,以便在本地段中传送。多个段= IP子网由路由器连接。帧不能跨越路由器,但内部的IP包可以。
IP仍然只传输容易打包的数据。为了获得应用程序可以轻松使用的数据流,像TCP这样的传输层协议创建了一个虚拟的、双边的、流连接(套接字),它非常类似于一个简单的串行连接--想想双方之间的电话呼叫。TCP的内部工作比底层的大多数东西要复杂得多,而且不易掌握。美之处在于,你不一定需要知道它是如何工作的才能使用它。
HTTP是一种应用层协议,它利用这种套接字连接从web服务器(网页、图形文件、.)获取资源。
因为TCP完成了所有的打包和重组工作,IP完成了在全球范围内运行的所有工作,而以太网完成了所有干扰电缆和硬件接口的工作,所以HTTP可以专注于自己的工作,保持(而不是)简单。
这是一个简单的,粗略的概述。当然,您可以在IP上使用其他物理和链路层协议,但是以太网非常流行。您还可以在IP之上使用其他传输协议,这取决于应用程序的需求。显然,您可以在TCP或UDP或其他方面使用非常多的应用程序协议。
分组网络的关键是,您可以在一个单一的、极其多功能的网络中一起运行所有这些。
发布于 2018-04-24 15:18:07
你的问题非常广泛,但我会给你一些广泛的答案,因为细节太大,这个网站。您还将讨论这里不允许的主题,例如OSI第4层以上的协议和应用程序。
http消息是如何创建的?
HTTP是一种应用层协议(此处为非主题),消息由应用程序创建。
tcp在哪里生存,如何在传输层分割数据?
主机操作系统实现TCP和其他传输协议。源应用程序将向源TCP发送数据流,源TCP将处理将分段和段传递到目标TCP的所有操作,在目标TCP中,数据流将为目标应用程序重新组装。
对于TCP和IP之类的内容,您应该阅读和理解RFCs。只需搜索类似rfc tcp或rfc ip之类的内容。TCP的定义在RFC 793,传输控制协议中。这将为您全面解释TCP是如何工作的,包括它如何分割数据流。
发布于 2018-04-24 16:44:33
互联网的建立是为了连接各种不同的计算机系统,跨越各种不同的网络。
因此,一般来说,互联网标准关注的是电线上所看到的东西。在任何给定主机上如何实现这些进程的细节取决于主机操作系统的设计。
实际上,在绝大多数主机上,操作系统的一部分(通常在内核中)的网络堆栈与使用它的应用程序之间存在着分裂。
要在这个拆分过程中传递信息,需要一个API。变体的"Berkerly套接字“API成为所有主要操作系统的规范。对于类似Unix的系统,Berkerly的一个变体被标准化为Posix的一部分。windows上的Winsock也是此API的一个变体。
还有一些东西通常是在用户库中实现的。例如,在类似Unix的系统中,名称解析通常由libc处理(libc是操作系统的一部分,而不是内核的一部分)。
核心的不是在RFC中定义的,尽管对它的许多扩展是这样的。
请注意,Berkerly使用套接字一词与TCP不同。berkerly套接字意义上的套接字是一个操作系统对象,它表示应用程序和操作系统之间的通信接口。
使用TCP,应用程序可以处理字节流。这些文件通过类似文件的接口传递到操作系统和操作系统。在类似unix的系统上,套接字实际上由文件描述符表示,应用程序可以使用sockets提供的发送和recv调用,也可以使用普通的文件描述符读写调用。在windows上,套接字有自己的描述符类型,应用程序必须使用sockets提供的send调用。
https://networkengineering.stackexchange.com/questions/50084
复制相似问题