[쉽게 배우는 데이터 통신과 컴퓨터 네트워크] 12장-연습문제

2021. 6. 10. 17:31·Major/Computer Network
728x90

<연습문제>

 

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 교재 참고

 

728x90
저작자표시 비영리 (새창열림)

'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
'Major/Computer Network' 카테고리의 다른 글
  • [데이터 통신] 5장 - MAC 계층
  • [데이터 통신] 9장 - TCP 프로토콜
  • [데이터 통신] Chapter 3 네트워크 기술
  • [데이터 통신] Chapter 2 네트워크 모델
BeNI
BeNI
코딩하는 블로그
  • BeNI
    코딩못하는컴공
    BeNI
  • 전체
    오늘
    어제
    • Menu (253)
      • My profile (1)
      • 회고 | 후기 (8)
      • Frontend (65)
        • Article (11)
        • Study (35)
        • 프로그래머스 FE 데브코스 (19)
      • Backend (0)
      • Algorithm (58)
        • Solution (46)
        • Study (12)
      • Major (111)
        • C&C++ (23)
        • Java (20)
        • Data Structure (14)
        • Computer Network (12)
        • Database (15)
        • Linux (6)
        • Architecture (3)
        • Lisp (15)
        • OS (1)
        • Security (2)
      • etc (2)
  • 링크

    • 깃허브
    • 방명록
  • 인기 글

  • 최근 댓글

  • 최근 글

  • 태그

    react
    백준
    파일처리
    Algorithm
    lisp
    C++
    리팩토링
    데브코스
    자료구조
    프로그래머스
  • hELLO· Designed By정상우.v4.10.2
BeNI
[쉽게 배우는 데이터 통신과 컴퓨터 네트워크] 12장-연습문제
상단으로

티스토리툴바