Network

TCP/IP 프로토콜

alexrider94 2021. 2. 9. 23:43

TCP/IP 프로토콜이란?

TCP와 IP의 프로토콜을 각각을 의미할 수 있지만 함께 사용되는 경우에는 TCP/IP 프로토콜을 사용하는 모음을 뜻한다.

아래 그림처럼 5개의 층을 사용하는 구조를 TCP/IP 프로토콜 모델이라고 한다.

- 네트워크와 네트워크를 연결하는데 사용하는 프로토콜로 대부분의 응용 프로그램이 TCP/IP 프로토콜을 이용하여 데이터를 교환한다

TCP/IP 모델과 OSI 7계층 모델

 

*네트워크 인터페이스 or 데이터링크&물리계층

 

* TCP/IP 프로토콜을 계층으로 나눈 이유?

프로토콜 계층화는 복잡한 작업을 여러 개의 작고 단순한 작업들로 나눌 수 있게 해준다.

장점으로는 이러한 계층화는 모듈성을 가지게 되는데 모듈성으로 나누어지면 어떤지점에서 문제점이 발생하고 구현하는부분을 분리할 수 있고 중간시스템의 통신을 가능하게 한다는 특징이 있다. 

계층화의 단점으로는 단순한것도 복잡하게 나뉘어져야 하는 경우가 있다.

 

* 실제 네트워크가 TCP/IP 모델을 이용해서 이루어지는 과정

1. 인터넷 사용자가 주소창에 naver.com을 입력한다.

2. 클라이언트에서 naver.com의 아이피주소를 DNS 서버에 요청한다.

3. 애플리케이션 계층에서 HTTP 프로토콜을 이용해서 전송계층으로 데이터를 전달한다.

4. 전송계층에서 TCP 프로토콜을 이용해서 통신하기 쉽게 HTTP 메세지를 패킷으로 분해한다.

5. 분해된 데이터를 판별하기 위해 일련번호를 부여한다.

6. 인터넷 계층으로 데이터를 전달한다.

7. 인터넷 사용자가 어디있는지 인터넷을 통해 라우터를 통해서 찾아다니며 이동하고 찾아내면 전송계층으로 이동한다.

8. 전송계층에서 일련번호를 보고 다시 조립한다.

9. 애플리케이션 층으로 데이터를 전달한다.

10. 전달받은 데이터를 서버로 전달한다.

11. 서버에서 받은 데이터를 클라이언트에게 보여준다.

 

전송 과정

 

* 계층에서마다의 데이터의 전송 단위

- 데이터가 계층을 통해 지나갈때마다 헤더와 같은 것들이 붙어서 이름이 달라진다.

 OSI 7 Layer

PDU (Protocol Data Unit) 

 Application / Presentation / Session

 Data

 Transport

 Segment

 Network

 Packet or Datagram

 Data Link

 Frame

 Physical

 Bit

 

물리계층

- 랜선, 허브같은 실제 물리적인 영역에서의 데이터계층 

- 데이터링크계층에서 받은 frame을 signal(bit)로 바꿔주는 역할.

데이터링크계층

- 대표적인 프로토콜은 이더넷이고 브릿지, 스위치같은 장비가 해당된다. 그리고 물리계층이 랜선허브와 같은 실제 물리적인 영역에서의 장비를 말한다. 물리적인 주소로 MAC을 사용하고 일반적인 기업에서의 전산팀이 데이터링크계층과 물리계층을 담당한다.

- 네트워크 계층에서 받은 datagram을 frame으로 캡슐화한다. 

 

* MAC주소는 사람의 이름처럼 네트워크 카드마다 붙은 고유한 이름이고 Media Access Control이라 부른다. 어떻게 프레임을 전송할 것인지 정의한다. 운영체제단에서 MAC 스푸핑으로 임시적으로 MAC주소를 변경할 수 있다.

MAC주소변경은 네트워크 가상화에 필수적이다.

 

* Ethernet Protocol

- 하드웨어에 대한 주소인 MAC주소를 기반으로 하드웨어 간 통신을 위한 Protocol

- 이더넷의 Frame의 구조

이더넷의 구조

1. Preamble -> 7 byte, 프레임의 도착을 의미. 네트워크 인터페이스 계층에 알리기 위한 부분.

2. SFD(Start Frame Delimiter) -> 최초 패킷을 알려주는것.

3. 목적지 MAC주소 (Destination Address) 

4. 출발지 MAC주소 (Source Address)

5. Len/Type -> 상위계층 프로토콜의 정보, ex) 이더넷 ver2

6. Data -> 전송할 데이터 0~1500Byte

7. FCS (Frame Check Sequence) : 패킷의 오류 확인을 위한 것.

네트워크계층

- 전송계층에서 받은 TCP를 받아서 datagram OR packet으로 캡슐화 한다. IP주소를 써서 목적지를 찾아간다.

- 프로토콜은 IP, ICMP, IGMP, ARP 등 이 있다. 

 

* Internet Protocol

- IP의 역할 → 네트워크의 주소 체계 관리, 데이터그램 정의, 전송에 필요한 경로 결정

IP의 구조

- 데이터그램의 헤더는 크기가 20~60Byte이고, 패킷을 전달하는데 필요한 모든 정보를 포함

- VER -> IP 프로토콜의 버전을 의미한다.

- HLEN -> 헤더의 길이

전송계층

- 응용계층에서 받은 메세지(data)를 Segment 즉 TCP로 캡슐화한다. 

- 두 호스트간의 데이터 전송을 담당하는 계층

- TCP, UDP, SCTP

 

* Transmission Control Protocol

- 네트워크 망에 연결된 컴퓨터의 프로그램 간 데이터를 순서대로 에러없이 교환할 수 있게 하는 역할

 

특징:

1. 연결지향 프로토콜 (스트림기반의 전송방식(데이터를 임의의 크기로 나누어 연속해서 전송하는 방식)),

2. 신뢰성 프로토콜 : 흐름제어(데이터 효율 전송, Sliding Window방식), 오류제어, 혼잡제어

 

TCP 프로토콜 구조

- Sequence Number ->송신 데이터 순서 번호로 이를 통해서 TCP에서 신뢰성 및 흐름제어를 한다.

- AK -> 확인응답번호/승인번호 (3-WAY Handshake)

 

* Sliding Window -> 두 개의 네트워크 호스트간의 패킷의 흐름을 제어하기 위한 방법

응용계층

- 프로세스간의 통신을 하는 층이다. 사이트주소 및 메일주소를 사용하는 계층. 

- SMTP,FTP,Telnet,DNS,SNMP,TFTP,HTTP,SSH,SFTP 등

 

* Hypertext Transfer Protocol

- 데이터를 주고받는 각각의 데이터 요청이 서로 독립적으로 관리하는 프로토콜

- 다수의 요청에 서버의 부하를 줄일 수 있는 특징

- TCP/IP 통신 위에서 동작하고 기본 포트는 80

- HTML 문서와 같은 리소스들을 처리할 수 있다.

 

- HTTP의 진화

  • HTTP/0.9, HTTP/1.0
  • HTTP/1.1 (표준)
  • HTTPS = HTTP/1.1 + SSL
  • HTTP2
  • HTTP3

 

HTTP1.1 요청/응답 과정

* Requests

1. 요청 라인

Method : POST 

Path : /

Version : HTTP/1.1

2. 요청 헤더

Accept: 클라이언트가 받을 수 있는 컨텐츠

Cookie

Content-type: 메세지 종류 ( form/ json/ multi-part )

Content-length: 메세지 길이

 

* Responses

1. 응답 라인

- Version : HTTP/1.1

- Status Code : 403

- Status message : Forbidden

2. 응답 헤더

3. 응답 바디

 

* 상태 코드

-1xx: 정보

-2xx: 성공

-3xx: 리다이렉션

-4xx: 클라이언트오류

400: 요청오류, 401: 권한없음 403: 요청거부 ,404: 리소스없음

-5xx: 서버오류

 

* GET
- URL에 담아서 전송한다.
- 길이에 제한이 있다.
- 주소입력창에 노출된다.
- 조회 역활에 사용한다.

 

* POST
- Body에 담아서 전송한다.
- 길이에 제한이 없다.
- 주소입력창에 노출이 되지 않는다.

 

 

 

 

각 계층의 프로토콜들