> For the complete documentation index, see [llms.txt](https://minhee0327.gitbook.io/mini-til/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://minhee0327.gitbook.io/mini-til/network/tcp-and-ip-basic/02_tcp_ip.md).

# 02 TCP/IP 개요

* 통신 프로토콜: 데이터를 주고 받으려면, 송신측과 수신측의 컴퓨터가 미리 정해둔 공통 메뉴얼에 따라 연락을 취해야한다. 이 때 이 메뉴얼을 프로토콜이라고 한다.
* TCP/IP란?
  * 데이터 송수신에 관한 일련의 작업을 하나로 모은것.
  * 전 세계적으로 공통된 통신 프로토콜로 체택.
  * '데이터를 디지털 신호로 바꾼다' => '보낼 곳에 전달' => 디지털 신호를 데이터로 되돌린다.
  * 이 때, 5 단계의 절차를 거친다.
  * 각 단계를 계층(layer)라고 하며 &#x20;

    사용자에게 가까운 application 계층 => 기계에 가까운 물리 계층 순으로 아래 작성.

    * 어플리케이션 계층
      * application에 맞춰 통신 수행
      * 어플리케이션마다 다양한 프로토콜이 있음.
      * 예: HTTP, SMTP,POP3, FTP, ...
    * 트렌스포트 계층
      * 송신된 데이터를 수신측 application에 전달하기 위해 작동
      * 예: TCP(Transmission Control Protocol), UDP
    * 네트워크 계층
      * 수신측 컴퓨터까지 데이터를 전달하기 위해 작동.
      * 전달된 데이터가 손상됬는지 또는 수신측이 잘 받았는지는 관여X
      * 예: IP(Internet Protocol)
    * 데이터링크 계층
      * 네트워크에 직접 연결된 기기간 전송을 수행할 수 있게 함.
      * 네트워크계층과 물리계층간의 차이를 완전 흡수하기위한 다양한 프로토콜 존재
      * 예: Ethernet, ATM, PPP, PPPoE, FDDI , ...
    * 물리계층
      * 데이터를 신호로, 신호를 데이터로 변환.
      * 변환 방법은 통신 매체에 의존.
      * 따라서 특정 프로토콜이 정해져 있진 않음.
  * 일반적으로 TCP/IP라고 하면, 위 5계층을 가리킴.
  * 하지만 TCP, IP 각 프로토콜을 가리키는 경우도 있어서, 구별하기위해 &#x20;

    5계층 전체를 TCP/IP 프로토콜 군이라고 함.
  * 프로토콜 조합을 바꿈으로써, 다양한 Application이나 기기 처리가 가능.
  * '무엇을 할지?'에 따라, 사용할 프로토콜 조합이 달라짐.
* 계층간 연락방법
  * 송신측의 각 계층에서는 수신측의 동일한 계층에서 필요한 정보를 공통된 서식으로 데이터를 추가해 가야한다.
  * \[헤더]-\[데이터]-\[트레일러]
  * 데이터 앞에 추가한 정보를 헤더, 뒤에 추가한 정보를 트레일러라고함.
  * 상위 계층에서 추가한 헤더와 트레일러는 데이터로 합쳐져서 하나로 묶인다. &#x20;

    (캡슐화: 데이터와 정보가 하나루 묶여서 다뤄지는 것.)
  * 트레일러가 없는 것도 있음!
  * 송신측에서 추가된 헤더와 트레일러는 수신측의 동일한 계층에서만 사용됨.
* 계층으로 보는 데이터 송수신 작업
  * 송신
    * Application 계층
      * 어플리케이션간에 데이터 주고받기 위해 필요한 정보를 넣음(헤더/트레일러)
    * 트렌스포트 계층
      * 접속환경에 맞춘 크기로 분할, 분할된 하나하나를 **패킷**이라고함.
      * 어플리케이션을 나타내는 번호와, 데이터를 조합하기위한 정보를 넣음
    * 네트워크 계층
      * 송수신할 컴퓨터의 주소와, 수신 불명일 경우 데이터를 파기하는 표시등을 함.
    * 데이터 링크 계층
      * 네트워크 종류에 맞춘 형식으로 보낼 곳의 정보를 써넣음.
    * 물리계층
      * 비트열을 신호로 변환
  * 수신
    * 물리 계층
      * 신호를 비트열로 변환
    * 데이터 링크 계층
      * 헤더에 정보를 확인하고, 지정된 프로토콜로 전달.
    * 네트워크 계층
      * 헤더에 적힌 목적지를 확인하고, 지정된 프로토콜로 전달.
    * 트렌스포 계층
      * 헤더를 확인하고, 데이터 순서대로 나열 하고 조합.
      * 데이터에 문제가 있을시, 그에 따른 처리를 함.
    * 어플리케이션 계층
      * 지정된 어플리케이션으로 전달.
* 패킷: TCP/IP에서 데이터를 일정한 크기로 분할해서 보낼때, 작게 나눠진 데이터 하나하나를 뜻한다.\
  보통 1,024bit로 데이터 외에도 데이터 목적지, 주소 등 제어 정보를 가지고 있다.
