풍성한 라벤더농장이 될때까지
article thumbnail

오늘 공부한 내용

☁️

[merge 답변] Python - 리스트 슬라이싱

https://lamong.tistory.com/31


 

🫠(개인공부)

 

데이터통신 12장 연습문제

 

 

소켓 주소 체계에 대한 설명으로 올바른 것을 모두 고르시오.

  • 일반 프로그래밍 환경에서는 AF_UNIX와 AF_INET의 소켓 주소 체계를 많이 사용한다
  • AF_UNIX로 표시되는 유닉스 주소 체계는 서로 다른 호스트에서 실행되는 프로세스 사이의 통신을 지원한다 - 하나의 호스트 내부에서
  • 유닉스 주소 체계를 지원하는 sockaddr_un 구조체의 sun_family 필드는 유닉스 주고 체계를 의미하는 AF_UNIX 값을 갖는다.
  • 유닉스 주소 체계를 지원하는 sockaddr_un 구조체의 sun_path필드에는 소켓을 구분하는 주소를 표시하기 위해 IP주소와 포트 번호를 기록한다 - 파일 시스템의 경로명을
  • 여러 소켓 구조체를 통합해 일반 구조체 하나로 정의하기 위해 sockaddr이라는 공통주소 체게를 지원하는 구조체를 사용해 소켓 주소 표현 방법을 정의할 수 있다

인터넷 주소 체계에 대한 설명으로 올바른 것을 모두 고르시오

  • 서로 다른 호스트에서 실행되는 프로세스 사이의 통신을 지원하며 AF_INET로 표시한다
  • AF_INET 방식은 소켓이 생성되는 호스트의 IP주소와 포트번호를 조합하여 소켓 주소를 표현한다
  • sin_family 필드는 인터넷 주소 체계를 의미하는 AF_INET 값을 갖는다
  • sin_addr 호스트의 IP주소를, sin_port필드에는 포트 번호를 기록한다
  • 인터넷에서 특정 프로세스를 구분하는 유일한 주소는 (IP주소, 포트 번호)의 조합이고 다른 호스트에서는 이 조합의 값이 중복되는 프로세스가 동시에 존재할 수 있다 - 이 조합의 값이 중복되는 프로세스는 동시에 존재할 수 없다

소켓 함수에 대한 설명으로 올바른 것을 모두 고르시오

  • socket()함수는 매개변수로 지정한 유형에 따라 소켓을 생성한다
  • bind()함수는 socket() 함수로 생성된 소켓에 주소를 부여한다
  • listen() 함수는 보통 서버 프로세스에서 실행되며, 첫 번째 매개변수로 지정한 소켓에서 클라이언트의 연결 요구가 들어올 때까지 대기한다 - accept()
  • connect() 함수는 클라이언트 프로세스에서 사용하며, 서버와 연결 설정을 시도한다
  • send() 함수는 연결형 서비스를 제공하는 환경에서 데이터를 전송하는 역할을 하고, 함수는 연결형 서비스에서 데이터를 수신하는 역할을 한다

socket() 함수에 대한 설명으로 올바른 것을 모두 고르시오

  • socket(int domain, int tyoe, int protocol) 함수는 데이터 전송에 사용되는 소켓을 생성할 때 호출하며, 소켓을 성공적으로 생성하면 소켓 디스크림터를 반환한다
  • domain은 AF_UNIX, AF_INET 등과 같이 사용할 프로토콜의 도메인이고, type은 SOCK_STREAM, SOCK_DGRAM 등의 서비스 유형이다
  • 인터넷 도메인을 의미하는 AF_UNIX를 예로 들면 연결형 서비스는 TCP 프로토콜을, 비연결형 서비스는 UDP 프로토콜을 선택한다 - AF_INET
  • socket(AF_INET, SOCK_STREAM, 0)은 인터넷 환경에서 UDP 프로토콜용 소켓을 한다 - TCP

accept() 함수에 대한 설명으로 올바른 것을 모두 고르시오

  • 클라이언트, 서버 환경에서 서버 프로세스는 accept() 함수를 실행해 클라이언트의 요청을 기다리고, 클라이언트 프로세스의 connect() 요쳥이 발생하면 연결이 설정된다.
  • 서버는 어느 클라이언트가 연결을 시도했는지 알 수 있고, 경우에 따라서는 클라이언트 주소를 보고 연결 요청을 거부할 수도 있다
  • 성공적으로 연결이 만들어지면 socket() 함수로 생성한 원래의 소켓과는 별도의 소켓이 새로 만들어진다
  • 대부분의 인터넷 서비스는 서버 프로세스가 클라이언트 프로세스로부터 연결 요청이 들어와 새로운 프로세스를 생성하고, 이 하위 서버 프로세스가 클라이언트와 통신하도록 설계

connect() 함수에 대한 설명으로 올바른 것을 모두 고르시오

  • 연결형 서비스는 클라이언트 프로세스가 서버 프로세스에 연결 요청을 할 때 connect() 함수를 사용한다
  • 클라이언트는 자신의 주소를 공개하지 않아도 되기 때문에 명시적으로 bind() 함수를 실행하지 않고 connect() 함수를 실행한다
  • 연결형 서비스에서 클라이언트에는 프로그램이 실행되는 호스트의 IP 주소와 임의의 포트번호가 자동으로 할당된다
  • 서버의 IP 주소를 표기할 때는 십진수 표기 방식을 32비트의 이진수 방식으로 변환해 inet_ntoa() 함수가 사용된다 - inet_addr()

TCP를 이용한 연결형 서비스에 대한 설명으로 올바른 것을 모두 고르시오

  • 서버 프로세스는 다수의 클라이언트에 공개되는 포트로 자신의 소켓 주소를 설정한 후에, 클라이언트의 연결 요청을 기다린다
  • 서비스 시간이 긴 경우에는 서버 프로세스가 하위 서버 프로세스를 생성하지 않고 직접 서비스를 제공한다 - 짧은 경우는
  • 서비스 시간이 짧으면 하위 서버 프로세스를 생성하여 클라이언트에 서비스를 제공하도록 중개 역할만 한다 - 길어지면
  • 서버가 먼저 accept() 함수에서 대기하고 클라이언트의 connect() 요청이 발생하면 연결 설정이 이루어진다
  • 연결형 서비스는 연결 절차가 필요하므로 클라이언트뿐 아니라 서버도 연결이 설정되야 사실을 인지할 수 있다

UDP를 이용한 비연결형 서비스에 대한 설명으로 올바른 것을 모두 고르시오

  • 비연결형 서비스에서는 connect()와 accept() 함수로 연결을 설정하는 과정이 생략되며, 데이터 송수신을 위한 send(), recv() 함수를 사용한다 - sendto(), recvfrom()
  • 비연결형 서비스에서는 전송 데이터마다 수신자의 소켓 주소를 함께 전송해야 한다
  • 비연결형 서비스는 연결 절차가 생략되므로 서버가 클라이언트를 인지하는 방법은 클라이언트의 sendto() 요청에 의해서만 가능하다
  • 클라이언트는 자기 자신의 주소 정보를 알 필요가 없으며, 서버는 클라이언트로부터 정보에서 클라이언트 주소 정보를 알 수 있다

(AF_UNIX)로 표시되는 유닉스 주소 체계는 하나의 호스트 내부에서 실행되는 프로세스 사이의 통신을 지원하며, 사용하는 주소 체계는 파일 시스템의 (경로명)을 기반으로 한다. 유닉스 주소 체계를 지원하는 sockaddr_un 구조체에서 sun_family 필드는 유닉스 주소 체계를 의미하는 (AF_UNIX)값을 갖는다. sun_path 필드에는 소켓을 구분하는 주소를 표시하기 위해 파일 시스템의 (경로명)을 기록한다

 

 

인터넷 주소 체계는 서로 다른 호스트에서 실행되는 프로세스 사이의 통신을 지원하며 (AF_INET)로 표시한다. 이 방식은 소켓이 생성되는 호스트의 (IP 주소)와 (포트번호)를 조합하여 소켓 주소를 표현한ㄷ. 인터넷 주소 체계를 지원하는 sockaddr_in 구조체에서 sin_family 필드는 인터넷 주소 체계를 의미하는 (AF_INET)값을 갖는다. sin_addr 필드에는 호스트의 (IP주소)를, sin_port 필드에는 (포트 번호)를 기록한다

 

(sockaddr)이라는 공통 주소 체계를 지원하는 구조체를 사용해 소켓 주소 표현 방법을 정의할 수 있다. 이 구조체는 단순히 프로그래밍 환경에서 문법적인 측면만 고려해 정의된 것이며 유닉스나 인터넷 주소 체계 같은 다른 주소 체계에서 필요한 공간보다 커야 한다. 인터넷을 이용한 소켓 프로그래밍을 하는 경우에 소켓 변수는 인터넷 주소 체계인 (sockaddr_in)구조체를 사용한다

 

통신 프로토콜의 종류에 따른 주소 체계가 여러 개인 것처럼, 제공하는 서비스에 따른 소켓 유형도 다양하다. (SOCK_STREAM)은 연결형 서비스를 의미하므로 인터넷에서 TCP 프로토콜에 대응하고, (SOCK_DGRAM)은 비연결형 서비스를 의미하므로 UDP 프로토콜에 대응한다. (SOCK_RAW)는 일반 네트워크 응용 프로그램 개발에서는 자주 사용되지 않으며, IP 프로토콜을 직접 사용한다


오늘의 느낀점

profile

풍성한 라벤더농장이 될때까지

@그레이라벤더

느리지만 꾸준히 굴러서 큰 바다가 되고싶은 개발 어린이