Search
🔵

bc9.3__2. title: 소켓은 애플리케이션 레이어와 전송 레이어의 인터페이스이다. 소켓을 생성하기 위해서는 TCP 또는 UDP 라는 통신방식을 정해 주어야 한다.

생성
prev summary
🚀 prev note
next summary
🚀 next note
♻️ next note
💡 아이디어조각
11 more properties
소켓은 애플리케이션 레이어와 전송 레이어의 인터페이스이다(참고1,참고2). 즉, 애플리케이션 계층의 어떤 프로토콜을 사용하든, TCP나 UDP 등을 사용하기 위해서는 소켓이라는 것을 거쳐야 한다. 이러한 이유로 당연히 소켓을 생성(from1)할 때 전송 계층의 프로토콜을 명시적으로 정해 주어야 한다.
C를 이용하여 소켓 프로그래밍을 하는 경우에는 다음과 같은 방식으로 프로그래밍한다.
1.
통신방식을 정한다.
클라이언트: addrinfo 구조체에 값을 쓴다. 예를 들어 구조체 멤버 변수 family에는 AF_INET(IPv4를 의미함), 다른 멤버 변수 socktype에는 SOCK_STREAM(TCP를 의미함)을 쓴다. 참고로 UDP연결을 하고 싶다면 SOCK_DGRAM을 쓴다.
서버: addrinfo 구조체에 값을 쓴다. 예를 들어 구조체 멤버 변수 family에는 AF_INET(IPv4를 의미함), 다른 멤버 변수 socktype에는 SOCK_STREAM(TCP를 의미함)을 쓴다. 참고로 UDP연결을 하고 싶다면 SOCK_DGRAM을 쓴다. 여기까지는 클라이언트와 동일하다. 하지만 만약 서버를 만들고 싶다면 멤버 변수 flagAI_PASSIVE(서버를 의미함)을 쓴다.
2.
소켓을 생성한다
클라이언트: 통신방식, 포트번호, 도메인네임으로 소켓을 생성한다. getaddrinfo() 함수에 도메인네임, 포트, 통신방식을 전달하면 addrinfo 구조체 연결 리스트를 전달받는다(의문). addrinfo 구조체는 소켓을 생성하는 일에도 사용된다. socket() 함수에 addrinfo 구조체 변수를 입력하면 소켓이 생성된다.
서버: 통신방식, 포트번호로 소켓을 생성하고 대기한다. getaddrinfo() 함수에 포트, 통신방식을 전달하면(클라이언트를 작성할때와 달리 당연히 도메인네임은 NULL 을 전달한다) addrinfo 구조체 연결 리스트를 전달받는다. 이번에도 마찬가지로 addrinfo 구조체는 소켓을 생성하는 일에 사용된다. socket() 함수에 addrinfo 구조체 변수를 입력하면 소켓이 생성된다.
이렇게 생성된 소켓은 그냥 파일 디스크립터다.
parse me : 언젠가 이 글에 쓰이면 좋을 것 같은 재료들.
from : 과거의 어떤 생각이 이 생각을 만들었는가?
supplementary : 어떤 새로운 생각이 이 문서에 작성된 생각을 뒷받침하는가?
1.
None
opposite : 어떤 새로운 생각이 이 문서에 작성된 생각과 대조되는가?
1.
None
to : 이 문서에 작성된 생각이 어떤 생각으로 발전되고 이어지는가?
1.
2.
참고 : 레퍼런스