01. TCP/IP 프로토콜 구조
- 호스트 최종 사용자의 응용 프로그램을 수행하는 주체로
인터넷에 연결 된 PC,노트북,스마트폰,테블릿 등이 있다. - 라우터 : 호스트에서 생성된 데이터를 여러 네트워크를 거쳐 전송함으로써
다른 네트워크에 속한 호스트 간에 데이터를 교환할 수 있도록 하는 장비 - 호스트와 라우터, 라우터와 라우터, 호스트와 호스트가 동신을 하려면
정해진 절차와 방법을 따라야하는데 이를 통신프로토콜 이라고한다. - 인터넷에서 사용하는 핵심 프로토콜은 TCP/IP 프로토콜이라고 부른다.
- 응용 프로그램은 TCP/IP 프로토콜의 서비스를 사용하여 통신한다.

그림에서 통신을 수행하는 주체이자 통신의 최종 목적지는 호스트 자체가 아닌
호스트에서 수행하는 응용 프로그램이다.
통신 프로토콜은 기능별로 나누어 계층적으로 구현하는 것이 일반적이며
TCP/IP도 이 구조를 따른다.
네트워크 접근 계층
- 물리적 네트워크를 통한 실제 데이터 송수신을 담당한다.
- 물리적 신호를 처리하며 데이터를 송수신 하는 네트워크 하드웨어와 운영체제가 제공하는 장치 드라이버
- 이 계층에서는 하드웨워적 정의된 물리적주소를 사용하여 통신한다.
인터넷 계층
- 네트워크 접근 게층의 도움을 받아 데이터를 목적지 호스트까지 전달하는 역할을 한다.
- 소프트웨어적 정의된 논리적 주소인 IP주소 사용한다.
- 실제 통신을 하기위해 라우팅이 필요하다
라우팅 ?
-> 라우팅은 데이터를 목적지 까지 전달하는 일련의 작업을 가리키는 용어
전송 계층
- 최종 통신 목적지를 저장하고 오류없이 데이터를 전송하는 역할을 한다.
- 통신의 최종 목적지는 해당 호스트에서 실행되는 프로세스이다.
- 프로세스를 지정하는 16비트 주소를 포트번호라고 한다.
- 데이터 손실, 손상을 검출하여 잘못된 데이터를 목적지에 전달되지 않도록한다.

TCP를 사용한다고 데이터 전송이 반드시 성공하는 것은 아니다.
랜선에 문제가 생기는 등 물리적은 문제는 소프트웨어가 막을 수 없다.
응용 계층
- 전송계층을 기반으로 하는 다수의 프로토콜과 이 프로토콜을 사용하는 프로그램을 포괄한다.
데이터 전송원리
- 송신하는 호스트의 프로그램을 수신쪽으로 보내기 위해 각 프로토콜에서 정의한 제어정보가 필요하다.
- 제어정보는 위치에따라 앞 : 헤더 뒤 : 트레일러로 나뉜다.
- 데이터는 제어정보가 결합한 형태로 전송되며 이를 패킷이라 부른다 -> 제어정보 + 데이터 = 패킷
IP주소, 포트번호
- TCP/IP 프로토콜을 사용하여 통신할 때는 IP주소를 사용한다.
- 라우터가 라우팅 할 때는 IP헤더에 포함된 고유 수신가 IP주소를 사용한다.
IP주소는 최종목적지인 프로세스를 식별할 수 없다.
- 프로세스 식별자로는 포트번호를 사용한다.

클라이언트 - 서버 모델
- 네트워크로 연결된 컴퓨터에서 각각 실행되는 두 프로그램일 경우
반드시 통신 프로토콜을 사용해야만 데이터 통신이 가능하다. - 클라이언트는 서버주소를 알아야하지만 서버는 패킷에 정보가 담겨온다.
02. 소켓의 개념
소켓
- 리눅스에선 파일 디스크립터와 동등한 자격을 지닌다.
- recv(), send(), read(), write() 로 네트워크 통신할 수 있다.
- 응용 프로그램이 통신하려면 다음 요소들이 결정 되어야한다.
1. 사용할 프로토콜 (TCP/IP, UDP, IP등)
2. 송신 측 IP주소
3. 송신 측 포트번호
4. 수신 측 IP주소
5. 수신 측 포트번호

통신 종단점
소켓은 프로그램 관점에서 종단점, 출발과 도착점이라고 할 수 있다.
네트워크 프로그래밍 인터페이스
- 소켓은 TCP/IP 프로토콜 구조의 응용계층과 전송계층 사이에 존재하는 인터페이스로 간주한다.
- 소켓 인터페이스를 이용하여 TCP나 UDP 프로토콜에 접근할 수 있다.

'리눅스 소켓 프로그래밍 TCPIP' 카테고리의 다른 글
| UDP 서버 - 클라이언트 (0) | 2024.12.16 |
|---|---|
| 멀티 스레드 : 리눅스 (3) | 2024.12.16 |
| TCP 서버 - 클라이언트 (1) | 2024.12.13 |
| 소켓 주소 구조체 다루기 (3) | 2024.12.13 |
| 소켓 시작하기 (0) | 2024.12.12 |