본문 바로가기
모각코/2019 겨울방학

[동계 모각코]1회차 결과_2020-01-02

by 매화of사군자 2020. 1. 2.

1장 네트워크 프로그래밍과 소켓의 이해

소켓의 생성과정

  • 소켓 생성 - socket 함수 호출
  • IP주소와 PORT번호 할당 - bind 함수 호출
  • 연결요청 가능상태로 변경 - listen 함수 호출
  • 연결요청에 대한 수락 - accept 함수 호출

파일 디스크립터

- OS가 만든 파일 또는 소켓을 편하게 부르기 위해 부여된 숫자

파일 디스크립터 대상
0 표준입력 : std input
1 표준출력 : std output
2 표준에러 : std error

리눅스와 윈도우의 차이점

  • 리눅스 - 파일과 소켓을 동일한 것으로 본다.
  • 윈도우 - 파일과 소켓의 차이점이 존재한다.

2장 소켓의 프로토콜과 그에 따른 데이터 전송 특성

프로토콜

- 대화(컴퓨터 간의)에 필요한 통신규약

이름 프로토콜 체계
PF_INET IPv4 인터넷 프로토콜 체계
PF_INET6 IPv6 인터넷 프로토콜 체계
PF_LOCAL 로컬 통신을 위한 UNIX 프로토콜 체계
PF_PACKET Low Level 소켓을 위한 프로토콜 체계
PF_IPX IPX 노벨 프로토콜 체계

 

소켓 타입

- 연결지향형 소켓(SOCK_STREAM)

  • 중간에 데이터가 소멸되지 않고 목적지로 전송된다.
  • 전송 순서대로 데이터가 수신된다.
  • 전송되는 데이터의 경계가 존재하지 않는다. - 데이터가 채워진 후에 한번의 read 함수 호출을 통해서 데이터 전부를 읽어 들일수도 있고, 반대로 한번의 write 함수호출로 전송된 데이터 전부를 여러 번의 read 함수 호출을 통해서 읽어 들일수도 있다. --> read 함수의 호출횟수와 write 함수의 호출횟수는 연결지향형 소켓의 경우 큰 의미를 갖지 못한다.
  • 반드시 1대1 연결이다.

- 비연결지향형 소켓(SOCK_DGRAM)

  • 전송된 순서에 상관없이 가장 빠른 전송을 지향한다.
  • 전송된 데이터는 손실의 우려가 있고, 파손의 우려가 있다.
  • 전송되는 데이터의 경계가 존재한다. - 택배(데이터)를 통해 수령할 물건이 2개인데, 이를 세 번에 나눠서 수령할 수 없다.
  • 한번에 전송할 수 있는 데이터의 크기가 제한된다.

리눅스와 윈도우의 차이점

  • 리눅스 - 반환형이 int이다.
  • 윈도우 - 반환형이 SOCKET, INVALID_SOCKET이다.
  • SOCKET(정수), INVALID_SOCKET(-1) : 반환되는 값이 정수이므로 int형을 선언하여도 되지만 확작성을 고려하여 정의되어 있는 자료형을 이용하는것이 바람직하다.

3장 소켓에 할당되는 IP주소와 PORT번호

IP

- Internet Protocol의 약자로 인터넷상에서 데이터를 송수신할 목적으로 컴퓨터에게 부여하는 값

PORT

- 컴퓨터에게 부여하는 값이 아닌, 프로그램상에서 생성되는 소켓을 구분하기 위해 소켓에 부여되는 번호

 

IPv4 vs IPv6

- 4bytes 주소체계 vs 16bytes 주소체계

 

IP주소 기반의 데이터 전송과정

- 4bytes IP주소 중에서 네트워크 주소만을 참조해서 해당 네트워크로 데이터가 전송된다. 그리고 해당 네트워크는 전송된 데이터의 호스트 주소(호스트 ID)를 참조하여 호스트에 데이터를 전송해준다.

- 네트워크로 데이터가 전송된다는 것은 네트워크를 구성하는 Router 또는 Switch로 데이터가 전송됨을 뜻한다. 그러면 데이터를 전송 받은 Router는 데이터에 적혀있는 호스트 주소를 참조하여 호스트에 데이터를 전송해준다.

 

* 라우터, 스위치

- 네트워크를 구성하려면 외부로부터 수신된 데이터를 호스트에 전달하고, 호스트가 전달하는 데이터를 외부로 송신해주는 물리적 장치가 필요하다. 이를 가리켜 라우터 또는 스위치라 한다.

 

소켓의 구분에 활용되는 PORT번호

- IP는 컴퓨터를 구분하기 위한 목적으로 존재한다. 떄문에 IP만 있다면 목적지 컴퓨터로 데이터를 전송할 순 있다. 그러나 이것만 가지고 데이터를 수신해야 하는 최종 목적지인 응용프로그램에까지 데이터를 전송할 순 없다.

ex)동영상 데이터 수신을 위한 소켓과 인터넷 서핑 데이터 수신을 위한 소켓의 구분

- IP는 데이터를 NIC(Network Interface Card)을 통해 컴퓨터 내부로 전송하는데 사용된다. 그 후 컴퓨터 내부로 전송된 데이터를 용도에 맞게 각 소켓에 적절히 분배하는 작업은 OS가 담당한다.

- PORT번호는 하나의 OS내에서 소켓을 구분하는 목적으로 쓰이기 떄문에 중복으로 할당되지 않는다.

- 데이터 전송의 목적지 주소에는 IP주소뿐만 아니라 PORT번호도 포함이 된다. -> 그래야 최종 목적지에 해당하는 응용프로그램에까지 데이터를 전달할 수 있다.

 

* NIC

- 데이터 송수신장치

 


목표 : 1,2,3장 공부하기

현황 : 3-1까지 완료

못 한 이유 : 중간중간 놀았다. 다음엔 열심히 해야지ㅎㅎ

다음 목표 : 3-2부터 1월 7일에 시작합니다. Coming Soon

 

 

댓글