문서 편집 권한이 없습니다. 다음 이유를 확인해주세요: 요청한 명령은 다음 권한을 가진 사용자에게 제한됩니다: 사용자. 문서의 원본을 보거나 복사할 수 있습니다. [[분류:애플리케이션 계층]] == 개요 == '''네트워크 소켓'''은 컴퓨터 네트워크를 경유하는 프로세스 간 통신의 종착점이다. 오늘날 컴퓨터 간 통신의 대부분은 인터넷 프로토콜을 기반으로 하고 있으므로, 대부분의 네트워크 소켓은 '''인터넷 소켓'''이다. 네트워크 통신을 위한 프로그램들은 소켓을 생성하고, 이 소켓을 통해서 서로 데이터를 교환한다. 소켓은 RFC 147에 기술사항이 정의되어 있다. [[파일:소켓구조.png|프레임|오른쪽]] == 역사 == 소켓(socket)은 버클리 대학(University of California at Berkeley)에서 만들어져 1982년 BSD(Berkeley Software Distribution) UNIX 4.1에서 처음 소개 되었으며 현재 널리 사용 되는 것은 1986년 BSD UNIX 4.3에서 개정 된 것이다, 그래서 이 소켓을 BSD소켓 또는 버클리 소켓이라고 불리며 개발자는 이를 사용하여 네트워크 개발을 효율적으로 할 수 있다. == 구성 == 인터넷 소켓은 다음과 같은 요소들로 구성되어 있다. * 인터넷 프로토콜 (TCP, UDP, raw IP) * 로컬 [[IP 주소]] * 로컬 [[TCP, UDP 포트|포트]] * 원격 [[IP 주소]] * 원격 포트 == UDP 소켓 == === 클라이언트 === 1. 소켓 생성<br> serverPort = 12000<br> serverName = 'hostName'<br> clientSocket = socket(socket.AF_INET, socket.SOCK_DGRAM) 2. 메시지 전송 주고 받기<br> message = "What you want to transfer"<br> clientSocket.sendto(message, (serverName, serverPort))<br> modifiedMessage, serverAddress = clientSocket.recv-from(2048) 3. 소켓 닫기<br> clientSocket.close() === 서버 === 1. 소켓 생성<br> serverPort = 12000<br> serverSocket = socket(AF_INET, SOCK_DGRAM)<br> serverSocket.bind(('',serverPort)) 2. 접속을 기다린다.<br> while(메시지가 올때까지) 3. 메시지 전송 주고 받기<br> message, clientAddress = serverSocket.recvfrom(bufferSize)<br> serverSocket.sendto(messageInfo, clientAddress) 4. 소켓 닫기<br> serverSocket.close() == TCP 소켓 == === 클라이언트 === 1. 소켓 생성<br> serverName = 'serverName' serverPort = 12000 2. 서버 연결 요청<br> clientSocket.connect((serverName, serverPort)) 3. 메시지 전송 주고 받기<br> clientSocket.send(MessageToSend)<br> clientSocket.recv(BufferSize)<br> 4. 소켓 닫기<br> clientSocket.close()<br> === 서버 === 1. 소켓 생성<br> serverPort = 12000<br> serverSocket = socket(AF_INET, SOCK_STREAM)<br> serverSocket.bind(('', serverPort))<br> 2. 입력 연결 요청 대기<br> serverSocket.listen(1)<br> while(accept 가 참)<br> 3. 연결시 새로운 소켓 생성후 저장<br> connectionSocket = serverSocket.accept()<br> 4. 새로운 소켓으로 통신<br> connectionSocket.send(MessageToSend)<br> connectionSocket.recv(BufferSize)<br> 5. 소켓 닫기<br> connectionSocket.close()<br> 소켓 문서로 돌아갑니다.