Socket Programming Concepts.
소켓 프로그래밍은 네트워크 프로그래밍에서 나온 것으로 네트워크 프로그래밍이란 원격지의
데이터를 주고 받을 수 있는 프로그램을 만드는 것을 뜻한다.
소켓(Socket)은 원격지의 두 호스트간 연결의 매개체가 되는 소프트웨어 차원의 개념을 말한다.
이 연결의 매개체가 되는 소켓을 만들어주는 것이 바로 소켓 프로그래밍이라고 할 수 있다.
일단 소켓 프로그래밍에 사용되는 함수들은 아래와 같다.
=========================================
socket => 소켓 생성.
bind => 주소 부여.
listen => 대기.
accept => 연결 확인 및 수신.
connect => 접속.
read => 읽기.
write => 쓰기.
서버 측 소켓 프로그래밍은 아래와 같은 과정을 통해 이루어진다.
1.소켓 생성 => socket 함수.
2.생성된 소켓에 인터넷 주소 부여 => bind 함수.
3.데이터 수신 대기 => listen 함수.
4.데이터 수신 => accept 함수.
5.데이터 읽기 => read 함수.
6데이터 쓰기 => write 함수.
7. 3번 상태로 복귀 => listen 함수.
클라이언트 측 소켓 프로그래밍은 아래와 같은 과정을 통해 이루어진다.
1.소켓 생성 => socket 함수.
2.서버에 연결 => connect 함수.
3.데이터 쓰기 => write 함수.
4.데이터 읽기 => read 함수.
5.연결 종료 => close 함수.
서버와 클라이언트의 소켓 프로그래밍의 과정은 아래와 같다.
<server> => socket() => bind() => listen() => accept() => read() & write() => close()
^ | |
연결 요청 종료. 데이터 송,수신. 연결.
<client> => socket() =========>connect()=======> read() & write() => close()
서버와 클라이언트는 socket()를 통해 통신에 사용 될 소켓을 연다.
그 후 서버측에서는 bind()를 통해 주소를 부여하고, listen()를 통해 소켓을 데이터 수신 대기 상태로 만든다.
그 다음 클라이언트 측에서 connect()를 통해 연결 요청이 들어오게 되면, 다시 서버는 accept()를 통해 데이터 수신
상태로 만들고, 이후 서버와 클라이언트 측에서 read() & write()를 통해 데이터 송수신이 이루어진다.
그 후 서버,클라이언트 양 쪽에서 close()를 통해 연결이 종료된다.
'#Tip' 카테고리의 다른 글
Vim plugin. (0) | 2018.04.09 |
---|---|
About malloc () and free (). (0) | 2018.04.09 |
GDB simple usage. (0) | 2018.04.09 |
Assembly Handle Foundation. (0) | 2018.04.08 |
Installing pwntools. (0) | 2018.04.08 |