zoukankan      html  css  js  c++  java
  • 《计算机网络中port和socket的作用》

      首先需要了解:

      ip层提供的是主机到主机的数据传输服务,而传输层提供的端口到端口的数据传输服务。

    1.端口是什么?

      在我们进行socket(TCP)编程的时候,当我们创建调用socket的API成功时候,会得到一个整型的返回值welcome_sock。可以理解为一个句柄.

      然后指定一个端口(假如端口号为8888),然后与ip(假如IP为192.168.1.1)进行bind。

      那么这个时候welcome_sock就和8888与192.168.1.1就是绑定在一起的了。

      之后调用accept,监听welcome_sock,等待客户端连接。当客户端连接后,会再返回一个client_sock,这个时候client_sock除了绑定源端口和源IP(8888与192.168.1.1),还会绑定目标端口和目标IP。(需要注意的是对于客户端,8888与192.168.1.1是属于目标端口和目标IP)

      那么这个时候,这个client_sock就是一个四元组标识着源端口、源IP、目标端口、目标IP,当客户端有数据发送过来,就可以根据客户端的目的端口,服务器端就可以找到对应的进程。

      也就是端口是进程的标识

    2.socket是什么?

      根据上述来讲,socket是一个四元组,用来标识源端口、源IP、目标端口、目标IP。

      在我们应用层编程的时候,发送数据的时候,只需要调用send(socket,buf,sizeof(buf),0),不需要每次填写源端口、源IP、目标端口、目标IP。就可以把数据从应用层传到传输层进行数据封装。这样就减少层次之间数据传递。应用层只需要传要传输的数据。到传输层后,会根据socket添加对应的端口信息,到网络层,会再根据socket添加对应的ip。

  • 相关阅读:
    Java线程:线程的调度-优先级
    Java线程:线程的调度-休眠
    Java线程:线程的交互
    Java线程:线程的同步与锁
    使用GIT时排除NuGet的packages文件夹
    解决Visual Studio 2013 XAML设计器异常
    代码协定(四)——安装和使用
    在WPF 4.5中跨线程更新集合
    微软自家的.Net下的JavaScript引擎——ClearScript
    在MEF中手动导入依赖的模块
  • 原文地址:https://www.cnblogs.com/zhuangquan/p/15581927.html
Copyright © 2011-2022 走看看