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
'모각코 > 2019 겨울방학' 카테고리의 다른 글
[동계 모각코]2회차 결과_2020_01_09 (0) | 2020.01.09 |
---|---|
[동계 모각코]2회차 계획_2020_01_09 (0) | 2020.01.09 |
[동계 모각코]1회차 계획_2020_01_02 (0) | 2020.01.02 |
모각코 6회차 결과(19.08.07) (0) | 2019.08.07 |
모각코 6회차(19.08.07) (0) | 2019.08.07 |
댓글