18、Socket编程

1、实现通信的条件

1) IP地址

IP地址具有唯一性

IP地址的范围: 0.0.0.0 - 255. 255.255.255

本地IP地址: 127.0.0.1 或localhost

2) IP协议

Internet Protocol 互联网协议,为计算机网络相互连接进行通信而设计的协议

3)端口号

端口号包括物理端口和逻辑端口

物理端口是用于连接物理设备之间的接口

逻辑端口是逻辑上用于区分服务的端口

端口号只有整数,范围从0-65535

1024-5000分配给操作系统各个进程

大于5000为其他个人软件预留

常见开发软件的默认端口

HTTP

80

FTP

21

TELNET

23

Tomcat

8080

MySQL

3306

2、TCP/IP协议

TCP协议

Transmission Control Protocol传输控制协议

IP协议

Internet Protocol 互联网协议(网际互联协议)

3、TCP/IP五层模型

1)应用层

网络服务与最终用户的一个接口

协议有: HTTP FTP SMTP TFTP SNMP DNS TELNET HTTPS POP3 DHCP

2)传输层

定义传输数据的协议端口号,以及流程控制和差错校验

协议有: TCP UDP

3)网络层

进行逻辑地址寻址,实现不同网络之间的路径选择

协议有: ICMP IGMP IP(IPv4 IPv6) ARP RARP

4)数据链路层

建立逻辑连接,进行硬件地址寻址,差错校验等功能

5)物理层

建立、维护、断开物理连接。(由底层网络定义协议)

4、TCP的三次握手

(1)第一次握手: Client将标志位SYN置为1,随机产生-个值seq=J, 并将该数据包发送给Server,

Client进入SYN SENT状态,等待Server确认。

(2)第二次握手: Server收到数据包后由标志位SYN=1知道Client请求建立连接,Server将 标志位SYN和ACK都置为1,ack=J+1, 随机产生-一个值seq=K,并将该数据包发送给Client以确认连接请求,Server进入SYN_ RCVD状态。

(3)第三次握手: Client收到确认后,检查ack是否为J+1, ACK是否为1,如果正确则将标志位ACK置为

1, ack=K+1, 并将该数据包发送给Server, Server检查ack是否为K+1, ACK是否为1,如果正确则连接建立成功,Client和Server进 入ESTABLISHED状态,完成三次握手,随后Client与 Server之间可以开始传输

数据了。

5 Socket套接字

1:什么是socket: socket是BSD UNIX的通信机制,通常称为“套接字",其英文原意是“孔"或“插座"。有些顾名思义,socket正如其英文原意一样,像是一个多孔插座,可以提供多个端口的连接服务。为了更加直观的了解socket,可以用插座来比喻socket.

如果说socket是一个多孔插座,插座是提供各种电器供电的地方,不同的电器工作时需要的电压和电流也不样,但各种电器都有各自的一个插口,这个称之为“端口”。电器使用的电可以看做是网络资源或者是各种“流",电是由电线传输过来的,所以插座需要连接电线,这里电线也就是服务器和客户端连接"connection"。其中初始化socket的过程像是买来- 个插座的安装过程。

在插座这边的是“客户端”,电线那边提供电的发电厂是“服务器”。客户端和发电厂都各自拥有一个地址,即"IP地址”。其中还有一套传输和用电的规则,比如传输电时需要的电线多少伏才能满足需求,电器用电的技术参数,端口是几个孔的。这个是“协议”。正常情况下我们是不会去管协议的内容是什么,也就是说协议在我们面前是隐藏的。

二.工作原理:对于服务器来说,服务器先初始化socket,然后端口绑定(bind) ,再对端口监听(listen),调用accept阻塞, 等待客户端连接请求。对于客户端来说,客户端初始化socket,然后申请连接(connection)。客户端申请连接,服务器接受申请并且回复申请许可(这里要涉及TCP三次握手连接) ,然后发送数据,最后关闭连接,这是一次交互过程。

IP地址+端口号组成了socket, socket是网络 上运行的程序之间双向通信链路的终结点,是TCP和UDP的基础。

网络.上具有唯一标识的IP地址和端口号组合在一起, 才能构成唯一能识别的标识符套接字。

socket原理机制:

1)通信两端都有socket

2)网络通信其实就是socket之间的通信

3)数据在两个socket间通过I0流传输

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值