纯粹应试和朋友聊着玩儿的,码一下。只是一篇日记,请不要阅读。R
进程寻址
寻址,在计算机网络中是一个非常重要的概念,在应用层、网络层、数据链路层都存在寻址问题。其中,在应用层的寻址则是寻址进程。不同主机上的进程间通信,每个进程必须拥有标识符。我们定义了通过IP地址来寻址主机,通过端口号来寻址进程。因此,进程的标识符为<IP地址+端口号>。
传输层(TCP)的具体实现是由操作系统负责的,而应用软件是操作系统更上层的东西(人与计算机交互的那个层面)。所以出现了socket负责连接传输层和应用层。由于这里涉及两台主机的进程通信,所以socket包含客户端和服务器端的IP和端口号。
那么如果创建了一个socket,就表明客户端与服务器成功实现了连接,接下来的事情就是收发数据。
网络程序设计
socket编程
哈工大网课对socket的定义:类似于寄信——
发送方将消息送到门外邮箱;发送方依赖(门外的)传输基础设施将消息传到接收方所在主机,并送到接收方的门外;接收方从门外获取消息。socket就是邮筒,插座,一个连接的装置。
传输基础设施向进程提供API(网络的API即socket),它决定了:传输协议的选择,参数的设置。
扩展:API
应用编程接口API:就是应用进程的控制权和操作系统的控制权进行转换的一个系统调用接口。
为什么说socket是一个抽象的概念呢,因为它屏蔽了底层细节。在用socket编程来实现数据交换的时候,不用管操作系统的任何操作,与传输层及以下的传输全部无关,除了用到端口号。(端口号是传输层用来给应用层提供服务的纽带)
当应用进程创建套接字时,操作系统分配一个数据结构存储该套接字相关信息(双方的那四个信息以及该socket本身的名字),返回套接字描述符。
更深入的知识暂时不打算学了,只是想利用socket来理解一下传输层和应用层的交互。做做真题看考不考socket编程吧,考的话就再学。