OSI 7계층, 혹은 5계층이 있다. 우리가 흔히 "인터넷"을 언급할 때에는 주로 트랜스포트 계층을 이야기한다. TCP/UDP의 프로토콜로 구현되며, 인터넷 상의 모든 정보가 이 계층을 반드시 이용하여 출입을 하므로, 인터넷을 사용하는 프로그램을 만들기 위해선 트랜스포트 계층에 접근하지 않을 수가 없다.
우리가 프로그램 개발을 할 때에 보통 손댈 수 있는 범위는 애플리케이션 계층에 한정되어 있다. 앞서 인터넷을 사용하는 프로그램은 트랜스포트를 쓸 수밖에 없다고 했는데, 어떻게 하면 애플리케이션 계층에서 트랜스포트 계층을 조작할 수 있을까. 이를 해결하기 위한 방법이 소켓(Socket)이라 불리는 인터페이스다.
소켓은 OS에서 제공하는 인터페이스다. 실제로 프로그램에서 소켓에 관련된 작업을 수행하면, OS는 그 요청을 받아들여서 새로운 소켓을 만든다. 우리는 오로지 이 소켓으로만 외부 네트워크와 통신을 할 수 있다.
UDP: Unreliable datagram
TCP: reliable, byte stream-oriented
자세한 내용은 글 참고
UDP: 클라인트와 서버 사이에 연결이 없다
UPD: 전송된 데이터가 솔실되거나, 뒤죽박죽으로 도착 가능(out of order)
Application 측면:
client는 반드시 서버와 연결해야한다.
서버 프로세스는 반드시 먼저 작동해야한다.
서버는 클라이언트의 연결을 받기 위해 반드시 소켓을 만들어야한다.
클라이언트는 다음을 통해 서버와 연결한다:
코드 및 구현은 밑 주소 참고
https://seolin.tistory.com/97
참고 | https://seolin.tistory.com/97
https://hororolol.tistory.com/277