Search
Duplicate
📒

[Network Study] 03-1. TCP/IP 와 TCP/IP 4계층이란?

상태
완료
수업
Network Study
주제
HTTP
4 more properties
참고

TCP/IP 4계층

NOTE
IP(인터넷 프로토콜)TCP(전송 조절 프로토콜)의 묶음을 의미한다!
OSI 7계층과 비교
송신자가 수신자에게 IP를 사용하여 최대한 빠르게 패킷을 전송한다.
TCP를 활용해 패킷을 정상적으로 수신 받는다.
이렇게 복수의 프로토콜 집합을 프로토콜 스택 혹은, 포로토콜 스위트라고 부르며, 다른 프로토콜 스택끼리 통신할 수 없다.

특징

각 계층별 처리 역할이 다르기 때문에, 계층별 간섭을 최소화할 수 있다.
특정 계층에서 문제가 생기면, 해당 계층을 살펴보면 되기 때문에, 유지 보수가 편리하다.
다른 계층끼리는 데이터의 전달 과정을 구체적으로 알 필요가 없기 때문에 은닉화가 가능

IP(Internet Protocol)란?

NOTE
패킷 데이터를 최대한 빨리 특정 목적지 주소로 보내는 프로토콜
빨리 보내는 것이 목적
패킷 전달 여부를 보증하지 않으며, 패킷을 보낸 순서와 받는 순서가 다를 수 있다.

TCP(Transmission Control Porotocl)란?

NOTE
패킷 통신이 나누어 전송하기 떄문에, 순서가 섞이거나, 유실되는걸 방지하기 위해 사용한다!
패킷 전달 여부를 보증하고, 패킷을 순서대로 받게 해준다.
목적지에 도착한 패킷들은 순서대로 정렬되고, 손상되거나 손실되면 재요청한다.

TCP/IP 4계층의 캡슐화, 역캡슐화

NOTE
계층별로 추가되는 헤더
데이터 전송 시
데이터는 상위 계층 → 하위 계층으로 이동하고 계층 이동마다 필요한 정보(헤더)가 추가된다.
데이터 수신 시
데이터는 하위 계층 → 상위 계층으로 이동하고 계층 이동마다 추가된 헤더를 읽고 알맞은 행동을 취한 후, 헤더를 제거한다.

4계층 : 애플리케이션 계층(Application Layer)

NOTE
사용자와 가장 가까운 계층으로, 사용자-소프트웨어 간 소통을 담당하는 계층이다!
애플리케이션을 실행하기 위한 데이터 형식이 작성된다.
프로토콜
HTTP, HTTPS, SSH, FTP ..

3계층 : 전송 계층 (Transport Layer)

NOTE
통신 노드 간 신뢰성 있는 데이터 전송을 보장하는 계층이다
역캡슐화 과정에서, 포트 번호를 사용해 데이터를 정확한 애플리케이션에 전달하는 역할도 한다.
프로토콜
TCP, UDP, RTCP ..

2계층 : 인터넷 계층(Internet Layer)

NOTE
패킷최종 목적지 까지 라우팅하는 계층!
프로토콜
IP, ARP, ICMP, OSPF

1계층 : 네트워크 엑세스 계층(Network Access Layer || Network Interface Layer)

NOTE
데이터를 전기신호로 변환한 뒤, 물리적 주소인 MAC 주소를 사용해 알맞은 기기로 전달하는 계층이다!
프로토콜
Ethernet, Wi-Fi, PPP ..

예제를 통한 TCP/IP 흐름 이해

NOTE
www.google.com을 웹 브라우저에 입력하는 과정을 알아보자!
위의 행동은 구글 웹서버에 80번 port로 HTTP Request를 보낸다는 의미와 동일하다.
우선, 구글 웹 서버에 HTTP Request를 보내기 위해선, 아래와 같이 각 계층에 필요한 정보들을 담은 패킷을 만들어야 한다.

1. Application Layer 단계

NOTE
HTTP Request 헤더가 들어간다!
:authority: www.google.com :method: GET :path: / :scheme: https ... ...
Bash
복사

2. Transport Layer 단계

NOTE
TCP 헤더가 들어간다.
TCP 헤더에서 중요하게 볼 것은 SP(출발지 포트번호)DP(목적지 포트번호)다.
출발지 포트번호 ⇒ 내 컴퓨터에서 만든 소켓의 번호
목적지 포트번호 ⇒ 80

3. Internet Layer 단계

NOTE
IP 헤더가 들어간다.
IP헤더에서 중요하게 볼 것은 SA(출발지 IP주소)DA(목적지 IP주소)다.
현재 www.google.com 도메인 정보만 알고있고, 시작과 목적지의 IP주소를 모른다.
따라서 도메인 서버에 DNS 쿼리를 보내고 IP주소를 응답받는다.

4. Network Access Layer 단계

NOTE
Ethernet 헤더가 들어간다.
Ethernet 헤더에서 중요하게 볼 것은 SA(출발지 MAC 주소)DA(목적지 MAC 주소)
MAC 주소는 물리적으로 연결된, 패킷이 전달될 라우터 또는 게이트 웨이의 MAC 주소를 말한다.
따라서, 라우터의 MAC 주소를 알아내기 위해 ARP프로토콜을 사용

5. 3 Way Hadnshaking

NOTE
패킷을 전송하기 전, TCP는 연결지향형 프로토콜이기 떄문에, 송신측과 수신측이 서로 연결되는 작업이 필요하다!
3 Way Handshaking을 수행하기 위해서, TCP헤더에 표시한 플래그들이 사용되며, 이러한 플래그들을 컨트롤 비트라고 부른다.
3 Way Handshaking은 SYN(동기화) 와 ACK(승인)로 진행된다.
3번의 통신을 진행함!
1.
클라이언트 ⇒ 서버, 접속요청 SYN 패킷을 보낸다.
2.
서버는 SYN패킷을 받고, ACK와 SYN 플래그가 설정된 패킷을 보낸다.
3.
클라이언트 ⇒ 서버, 다시 ACK 패킷을 보낸다.

6. 라우팅을 통해 목적지에 전송

NOTE
패킷을 전송하기 전, TCP는 연결지향형 프로토콜이기 떄문에, 송신측과 수신측이 서로 연결되는 작업이 필요하다!
여러번의 라우팅을 거쳐 목적지 서버에 도착한다.
패킷은 Network Access Layer의 MAC 주소 Internet Layer의 IP주소로 라우팅을 반복해 구글 서버까지 도착한다.
도착이후 과정은 다음과 같다.
1.
Transport Layer의 목적지 포트번호는 80으로 적혀있다.
2.
80번 포트를 사용하고 있는 Application Layer에 데이터 전송
3.
Application LayerHTTP Request 데이터를 받아 요청을 처리
4.
적절한 HTML을 클라이언트에 응답
⇒ 클라이언트는 라우팅을 통해 전달받은 google.com을 브라우저에 뛰운다!

7. HTTP 요청 과정이후 종료

NOTE
클라이언트와 서버의 연결 종료 작업은 4 Way Handshaking이라고 부르며, 4단계로 진행
ACK, FIN 플래그를 사용한다!
1.
클라이언트 ⇒ 서버, 연결을 종료하겠다는 FIN 패킷을 전송
2.
서버 ⇒ 클라이언트, ACK 패킷을 보내고 클라이언트가 보냈던 요청에 대한 응답을 보낸다.
3.
서버의 응답이 끝나면 클라이언트에게 FIN 패킷을 전송
4.
클라이언트는 서버의 통신 종료를 확인한 뒤, 서버에게 ACK 패킷을 보내고 연결이 종료된다.
단 FIN을 보내기 전에, 응답해야 했던 데이터가 늦게 들어올 수도 있다.
따라서 클라이언트는 FIN 패킷을 받고, ACK 패킷을 보낸 뒤에도 일정시간은 잉여 패킷을 기다린다.
이렇게 잉여 패킷을 기다리는 상태를, TIME_WAIT라고 한다.