인프런 김영한님 [모든 개발자를 위한 HTTP 웹 기본 지식] 강의를 듣고 정리한 내용입니다.
틀린 부분이 있으면 답글 달아 주세요😊😊
3. TCP (Transmission Control Protocol)
IP 프로토콜의 한계점을 해결해주는 것이 TCP 입니다.
👉 인터넷 프로토콜 스택의 4계층
👉 프로토콜 계층
1) 채팅 프로그램이 Hello, world! 메세지를 생성
2) SOCKET 라이브러리를 통해서 OS 계층에 메세지를 전달
3) OS 계층의 TCP 계층에서 Hello, world! 메세지를 포함해 TCP 데이터를 생성
4) OS 계층의 IP 계층에서 위에 TCP 데이터를 포함해 IP 패킷을 생성
5) IP 패킷이 LAN 카드를 통해 나갈 때 Ethernet Frame이 포함되어 나감
- Ethernet Frame : LAN 카드의 MAC 주소 등 물리적인 정보가 포함됨
👉 IP 패킷 정보
👉 TCP/IP 패킷 정보
💡 TCP 특징
- 전송 제어 프로토콜(Transmission Control Protocol)
• 연결지향 - TCP 3 way handshake (가상 연결) ⭐⭐⭐
- 연결이 된 후에 데이터 전송한다. 최적화가 되어서 3번보낼 때 데이터도 같이 전송 된다.
- 물리적으로 연결된 것은 아니고 논리적으로 연결된 것이다!!
• 데이터 전달 보증
• 순서 보장
- TCP/IP 패킷 정보 안에 순서 정보에 따른 내용도 보내주기 때문에 이와 같은 행위가 가능한 것이다.
• 신뢰할 수 있는 프로토콜
• 현재는 대부분 TCP 사용
4. UDP (User Datagram Protocol)
💡 UDP 특징
- 사용자 데이터그램 프로토콜 (User Datagram Protocol)
• 하얀 도화지에 비유(기능이 거의 없음)
• 연결 지향 - TCP 3 way handshake X
• 데이터 전달 보증 X
• 순서 보장 X
• 데이터 전달 및 순서가 보장되지 않지만, 단순하고 빠름
• 정리
- IP와 거의 같다 +PORT +체크섬(메세지가 맞는지 검증 해주는 데이터) 정도만 추가
- 애플리케이션에서 추가 작업 필요
- 최적화 하기위해 HTTP3 에서 UDP를 쓰면서 최근 많이 사용하고 있음
• 장점
- TCP 3 way handshake 하려면 시간이 오래 걸린다.
- 데이터 양도 크고 전송 속도도 느리다. 최적화가 어렵다.
❓ 질문 정리 ❓
Q. TCP의 3 way-handshake 에서 SYN/ACK를 주고받을 때, TCP/IP 패킷을 주고 받는 것인가?
A. TCP/IP 패킷은 헤더 부분과 실제 데이터가 전송되는 데이터 부분으로 나눌 수 있다.
3 way-handshake 단계에서 TCP/IP 패킷이 전송되지만 헤더 부분만 전송된다고 이해하면 된다. 이 헤더에 SYN, ACK 등을 포함해서 보내는 것이다.
직접 데이터를 보내는 3/4단계에서는 헤더 + 데이터 부분이 함께 전송된다.
Q. 웹 통신이 이루어지는 TCP/IP 4계층은 OSI 7계층과 별개의 것인가?
A. OSI(Open System Interconnection) 7계층이란, 네트워크에서 통신이 일어나는 과정을 7계층으로 나눈 것을 말한다. 계층을 나눈 이유는 통신이 일어나는 과정을 단계별로 파악할 수 있기 때문이다. TCP/IP이란, 인터넷에서 컴퓨터들이 서로 정보를 주고 받는데 쓰이는 프로토콜의 집합이다. 현재는 인터넷에서 컴퓨터들이 서로 정보를 주고받는데 쓰이는 통신규약이다.
👉 OSI 7 계층
1. 물리 계층 (Physical Layer)
- 물리적으로 연결된 두대의 컴퓨터가 0과 1의 나열을 주고 받을 수 있게 해주는 모듈입니다.
- 데이터만 전달할 뿐, 전송하려는 데이터가 무엇인지, 어떤 에러가 있는지는 전혀 신경쓰지 않습니다.
- 1계층 모듈은 하드웨어적으로 구현되어있다.(PHY 칩)
2. 데이터 링크 계층 (Data Link Layer)
- 같은 네트워크(스위치에 연결된)에 있는 여러 대의 컴퓨터들이 데이터를 주고 받기 위해서 필요한 모듈
- Framing은 데이터 링크 레이어 속하는 작업들 중 하나이다.
- 2계층 모듈도 1계층 모듈처럼 하드웨어적으로 구현되어 있다.(랜카드)
* Framing이란, 원본 데이터를 감싼 데이터의 앞뒤에 특정한 비트열을 말한다.(맥주소)
3. 네트워크 계층 (Network Layer)
- 다른 두 네트워크를 속한 컴퓨터끼리 통신이 가능하게 해주는 라우터와 연결된 네트워크 속에서
- 어딘가에 있는 목적지 컴퓨터로 데이터를 전송하기 위해,
- IP주소를 이용해서 길을 찾고, 자신 다음의 라우터에게 데이터를 넘겨주는 모듈
- 운영체제의 커널에 소프트웨어적으로 구현되어 있다.
* 라우터 : 데이터를 목적지까지 안전하고 빠르게 전달하는 기능
4. 전송 계층 (Transport Layer)
- PORT 번호를 사용하여 도착지 컴퓨터의 최종 도착지인 프로세스까지 데이터가 도달하게 하는 모듈
- 운영체제의 커널에 소프트웨어적으로 구현되어 있다.
* PORT : 하나의 컴퓨터에서 동시에 실행되고 있는 프로세스들이 서로 겹치지 않게 하져야 하는 정수 값
5. 세션 계층 (Session Layer)
- 연결 세션에서 데이터 교환과 에러 발생시의 복구를 관리
6. 표현 계층 (Presentation Layer)
- 데이터를 어떻게 표현할지 정하는 역할을 하는 계층 (해당 데이터가 TEXT인지, GIF인지, JPG인지의 구분하는 것)
- 표현 계층의 기능은, 데이터의 암호화와 복호화를 다루는 모듈입니다.
7. 응용 계층 (Applicaion Layer)
- 사용자와 가장 밀접한 계층이다.
- 응용 프로세스 간의 하이퍼텍스트 문서, 이미지, 비디오 등등 정보 교환을 담당하는 모듈이다.
[참고] https://velog.io/@inyong_pang/OSI-7-%EA%B3%84%EC%B8%B5%EA%B3%BC-TCPIP-%EA%B3%84%EC%B8%B5#osi-7-layer
Q. 3way-handshake를 통해 클라이언트 서버 간 논리적 연결의 의미는?
A. 물리적 연결은 PC와 PC를 직접 선으로 연결한 경우를 말한다.
반면, 논리적 연결은 클라이언트, 서버 사이에 무수히 많은 노드들을 거쳐 연결된 것이다.
3-way-handshake를 통한 연결이 직접 연결이 아닌 이유는 서버와 클라이언트는 서로 SYN, ACK를 통해 서로의 존재를 확인했음에도, 중간 노드의 결함이 발생할 경우 이 연결은 유효하지 않기 때문이다.
'📚 Computer Science > Network' 카테고리의 다른 글
[모든 개발자를 위한 HTTP 웹 기본 지식] 3. HTTP 기본 - Stateful, Stateless (0) | 2023.08.10 |
---|---|
[모든 개발자를 위한 HTTP 웹 기본 지식] 3. HTTP 기본 (0) | 2023.08.10 |
[모든 개발자를 위한 HTTP 웹 기본 지식] 2. URI와 웹 브라우저 요청 흐름 (0) | 2023.08.08 |
[모든 개발자를 위한 HTTP 웹 기본 지식] 1. 인터넷 통신 - PORT/DNS (0) | 2023.08.08 |
[모든 개발자를 위한 HTTP 웹 기본 지식] 1. 인터넷 통신 - IP (0) | 2023.08.07 |