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流传输