TCP/IP_Socket编程 - 简介


计算机网络、分组报文和协议


     计算机网络由一组通过通信信道相互连接的机器组成,我们把这些机器称为主机和路由器。主机主要指的是运行应用程序的计算机,路由器可以理解为将信息由一个通信信道传递或转发到另一个通信信道,通信信道可以理解为将字节序列从一台主机传输到另一台主机的一种手段,可能是有线电缆(以太网),也可能是无线(WiFi)。一个主机不可能和成千上万的主机一一相连,而先得和路由器相连,路由器再和路由器相连,从而形成了网络
     
     信息是由程序创建和解释的字节序列,在计算机网络中这些字节序列称为分组报文,一组分组报文包括了网络用来完成工作的控制信息和一些用户数据,分组报文中一般包含了用来表明报文要送达的目的地址信息的控制信息,路由器根据这些控制信息来对报文进行转发

     协议是通信程序间达成的一种约定,它们规定了分组报文的交换方式和它们包含的意义,一组协议包含了分组报文的结构以及怎样对分组报文包含的信息进行解析,协议的制定一般是为了解决某一特定的问题,比如超文本传输协议(HTTP)是为了解决在服务器间传递超文本对象的问题,这些超文本对象在服务器创建和存储,并由Web浏览器进行可视化。即时消息协议是为了解决在多个用户之间能够交换简短的文本信息问题

     要实现一个可用的网络,要解决大量的不同类型的问题,为了让每种类型问题的解决方案可管理和模块化,人们设计了不同的协议来解决不同类型的问题,TCP/IP协议就是这样一组解决方案,也称为协议族

  
   

     IP协议属于网络层,IP协议和路由器让两个主机之间的通信看起来是一对一的,它提供一种数据报服务,其中标明了目的地地址(主机地址),IP协议是一种'尽力而为'的协议,在报文的传输中有可能丢失、重复发送、顺序打乱。TCP和UDP协议属于传输层,也有一个地址(端口),负责指定主机上的应用程序,实现应用程序之间的数据传输

     TCP是一种可靠的面向连接的协议,提供了一个可信赖的字节流信道,能够修复和检测IP层提供的主机到主机间信道中可能发生的报文丢失,重复和一些其他的错误。在使用TCP进行通信之前,两个应用程序间需建立一个TCP连接,而连接的建立需要经过'三次握手'

     UDP只是对IP协议'尽力而为'的数据报服务进行了扩展,使它能够在应用程序之间工作,而不是在主机与主机间,这样使用UDP协议的程序就需要对报文丢失,顺序混乱等问题做相应的处理

地址 


         在TCP/IP协议中,用互联网地址和端口号来指定一台主机上的应用程序,互联网地址由IP协议层使用,端口号由TCP/UDP负责解析。每台主机可能会有多个网络接口(以太网、无线WiFi等)用来和其它主机进行通信,每台主机都会有一个回环接口,回环接口会把发送给它的报文简单回发给发送者,这在测试的时候会非常有用,IPv4回环接口地址表示为127.0.0.1,IPv6表示为0:0:0:0:0:0:0:1

          IPv4中保存了一些'私有用途'的地址,只在私有网络中使用,不能在公共网络中使用,以192.168或10开头的地址,第一个数是172,第二个数16到31的地址。这类地址一般用在公司或家庭网络中,通过NAT设备(网络地址转换)连接到互联网,这样可以使得很多主机共用一个公有网络的IP地址

          本地链接地址,也称为'自动配置'地址,IPv4中以169.254开头,IPv6中前16位由FE8开头。这类地址只能与同一网络中的主机进行通信,路由器不会转发这类地址的信息

          多播地址,普通的地址只与一个目的地址关联(称为单播),而多播地址可以与任意数量的目的地址关联。IPv4中第一个数在224到239之间,IPv6中由FF开头

套接字


     Socket(套接字)是一种抽象,应用程序通过它来发送和接收数据,就像应用程序打开一个文件句柄一样,将数据读写到稳定的存储器上一样,一个Socket能够添加到网络上,并与在同一网络中的其他主机进行通信,一台主机上应用程序向Socket写入的数据能够被另一台主机上的应用程序读取,反之亦然。

     

     上图为应用程序、套接字、端口之间的对应关系,可以看出,实际上一个端口确定了一台主机上的一个套接字




    
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值