<연습문제>
01
① AF_UNIX ② AF_INET
해설 : 한 호스트 내부에서 실행되는 프로세스 사이의 통신은 유닉스주소체계(AF_UNIX),
서로 다른 호스트의 프로세스 사이의 통신은 인터넷주소체계(AF_INEF)
02
① sockaddr_in
② sin_family
③ sin_addr
④ sin_port
* 영어 이름을 해석하면 이해하기 쉽다.
sockaddr_in = socket address internet > 소켓 주소 인터넷
sin = socket internet
03
① struct sockaddr *
해설 : 공통 주소체계인 sockaddr 구조체로 형 변환하여 문법의 통일성을 유지한다.
04
① SOCK_STREAM
② SOCK_DGRAM
해설 : SOCK_STREAM은 TCP(연결형)서비스를 제공, SOCK_DGRAM은 UDP(비연결형)서비스를 제공한다.
05
① 포트
② 포트 번호
해설 : 일반적으로 소켓을 포트라고 부르고, 소켓 주소는 포트 번호라고 부른다.
06
① TCP
② UDP
07
① listen()
② accept()
③ connect()
해설 : listen(), accept()는 서버쪽에서, connect()는 클라이언트 쪽에서 쓰는 함수이다.
08
① send
② recv
③ sendto
④ recvfrom
09
① INADDR_ANY
② IP 주소
해설 : 개발된 프로그램이 여러 컴퓨터에서 실행되는 경우, 각 실행 파일에 개별 IP주소를 지정하여 컴파일 하기는 현실적으로 불가능 하다. 이와 같은 상황을 고려해 INADDR_ANY라는 호스트 주소 표기 방법을 제공한다.
이는 프로세스가 실행되는 로컬 호스트 자체를 의미하기 때문에 프로세스가 실행되는 호스트의 IP 주소로 대체된다.
10
① Well-known 포트
② IP주소
③ 포트 번호
== 여기서부터 객관식 ==
ps. 문제 모두 고르시오 굉장히 킹받는다....답이 4개면 하나만 고르라고좀 하지...
11. ①②④⑤
해설 : ③ 인터넷 주소 체계를 지원하는 sockaddr_in구조체는 4byte(32bit)의 IP주소와 2byte(16bit)의 포트 번호를 지정
* 헷갈리는거 ⑤ sa_family에 AF_UNIX면 유닉스 주소체계, AF_INET면 인터넷주소체계인걸 확인 가능하다
12 ①②③④⑤
뭔 답이 5개? 노어이
13 ①②④
해설 :
③ accept()함수는 보통 서버프로그래밍에서 실행되며, 클라이언트 연결오구가 들어 올때 까지 대기 (O)
listen() accept()함수에서 대기 중이던~
⑤ send()랑 recv()는 연결형 서비스에서 사용된다.
14 ①⑤
해설 :
① AF_UNIX 도메인엔 IP주소와 포트번호 지정 안한다.
⑤ 개별 컴퓨터 바이트 순서를 네트워크 바이트 순서로 변환하는 건 htonl()과 htons()를 사용한다.
헷갈리는 거 :
④ 연결이 성공적으로 이뤄지면 별도의 소켓이 만들어지고 클라이언트와 통신할 때 보통 이 소켓을 사용
15 ①④⑤
② 서버 프로세스가 부여한 소켓과 포트번호는 유일하지 않다
③ 서버가 대기상태에 먼저 있고(accept) 클라이언트가 연결요청(connect)하면 연결된다.
16 ②
해설 : 서버는 소켓을 생성하고 소켓에 주소 부여절차르 수행한다.
클라이언트는 소켓을 생성만 하고 bind는 하지 않는다.
* 헷갈리는 거 : ③ TCP에서만 accept()랑 connect()를 사용하긴 하지만 결합을 하던가..?
==여기서부터 주관식 ==
17
소켓 주소는 소켓 시스템 콜을 통해 사용되는데, 의미는 같으나 형식이 다른 구조체를 함수 매개변수 하나로 수용하는 것은 불가능하기 때문에, 여러 소켓 구조체를 통합해 일반 구조체 하나로 필요가 있다.
18
socket() : 소켓 생성
bind() : 소켓에 주소 부여
listen() : 서버에서 클라이언트의 연결요청 개수 지정
accept() : 클라이언트에서 연결요청을 받기위해 대기하는 함수
connect() : 서버와 연결요청 시도
send() : 데이터를 전송
recv() : 데이터 수신
19
TCP : sd = socket(AF_INET, SOCK_STREAM, 0);
UDP : sd = socket(AF_INET, SOCK_DGRAM, 0);
20 교재 참고
21
프로그램이 여러 컴퓨터에서 실행되는 경우, 각 실행 파일에 개별 IP주소를 지정하여 컴파일 하기는 현실적으로 불가능하기 때문이다. (동일한 프로그램을 여러 호스트에서 실행시키기 위해 IP주소 변경과 재컴파일 과정을 피할려고)
22
htonl(), htons() : 개별 컴퓨터 바이트 순서를 네트워크 순서로 변환
ntonl(), ntons() : 네트워크 바이트 순서를 개별 컴퓨터 바이트 순서로 변환
23 교재참고
24 교재참고
25 교재 참고
'Major > Computer Network' 카테고리의 다른 글
[데이터 통신] 5장 - MAC 계층 (0) | 2021.06.13 |
---|---|
[데이터 통신] 9장 - TCP 프로토콜 (0) | 2021.06.12 |
[데이터 통신] Chapter 3 네트워크 기술 (0) | 2021.04.24 |
[데이터 통신] Chapter 2 네트워크 모델 (0) | 2021.04.22 |
[데이터 통신] Chapter 1 네트워크의 기초 용어와 기능 (0) | 2021.04.05 |