💡 간단 요약 :
인터넷 통신은 IP 프로토콜을 통해 이뤄지고, TCP는 연결 지향적이고 신뢰성이 높은 가상 회선 방식, UDP는 간단하고 빠른 데이터그램 방식이야. TCP는 연결 설정 후 안전하게 데이터 전송하고, UDP는 빠르게 전송하되 순서나 에러에 대한 보장은 없어. 포트는 프로세스 식별에 쓰이고, DNS는 도메인 명을 IP 주소로 변환해줘.
🔗 사진과 강의 출처 : 김영한님의 HTTP 웹 기본 지식
1. 인터넷 통신
어떤 방식으로 어떻게 수많은 복잡한 상황을 헤쳐서 도착할 수 있을까?
2. IP(인터넷 프로토콜 역할)
- 데이터가 안전하게 도달하기 위한 최소한의 규칙
- 지정한
IP 주소(IP Address)
에 데이터 전달 패킷(Packet)
이라는 통신 단위로 데이터 전달
IP 패킷에는 출발지 IP, 목적지 IP, 기타 전송데이터를 담고 전달하게 된다.
클라이언트 패킷 전달
서버 패킷 전달
IP 프로토콜의 한계
- 비연결성
- 패킷을 받을 대상이 없거나 서비스 불능 상태여도 패킷 전송
- 비신뢰성
- 중간에 패킷이 사라지면?
- 패킷이 순서대로 안오면? 중간에 다른 노드를 탈 가능성도 있음
- 프로그램 구분
- 같은 IP를 사용하는 서버에서 통신하는 애플리케이션이 둘 이상이면?
3. TCP/UDP
IP의 위와 같은 한계를 해결해주기 위한 해결책
인터넷 프로토콜 스택의 4계층
네트워크 인터페이스 계층은 LAN카드 등등 포함한 것이고 IP 위에 전송 계층이 있으면서 IP의 한계를 보완해준다고 생각하면 된다.
- 프로그램이 메세지 생성
- SOCKET 라이브러리를 통해 OS 계층에 메세지 전달
- 그 위에 TCP 정보 생성이 씌워지게 되며, 메세지 데이터를 포함하게 된다.
- 또 그 위에
IP 패킷
이 생성되며 씌워지게 되고, TCP 데이터까지 포함하게 된다.
packet
이란?- 컴퓨터 네트워크에서 데이터를 주고받을 때 정해 놓은 규칙
- pack + bucket : 정보를 보낼 때 특정 형태에 맞추어 보낸다는 것
- 즉, 컴퓨터 간에 데이터를 주고받을 때 네트워크를 통해서 전송되는 데이터 조각
- 정체를 방지하기 위해 packet를 사용
- LAN카드를 통해서 나갈 때 Ethernet frame이 씌워지게 됨
Ethernet frame
이란?- LAN에 등록된 MAC 주소 등을 포함하게 됨
- 데이터 링크 계층 프로토콜의 데이터 단위이며, 기본 이더넷 물리 계층 전송 매커니즘을 사용한다.
- 이더넷 링크의 데이터 단위는 이더넷 프레임을 페이로드로 전송
TCP/IP 패킷 정보
TCP 특징
전송 제어 프로토콜(Transmission Control Protocol)
연결지향 : TCP 3 way handshake (가상 연결 O, 물리적 연결 X)
- SYN : 접속 요청(동기화의 약자) ACK(승인) : 요청 수락
- 이렇게 되면 양쪽에서 접속 요청, 수락을 다 하는 것이라 클라이언트도 서버를 믿을 수 있고 서버도 클라이언트를 믿을 수 있다.(신뢰성)
- 결국 응답이 안오면 연결이 안되있네 하고 데이터 전송을 안하게 되는 것
순서 보장
- 서버 내부에서 최적화도 가능함
신뢰할 수 있는 프로토콜
데이터 전달 보증
현재는 대부분 TCP 사용
TCP 제어 방법
UDP 특징
- 사용자 데이터그램 프로토콜(User Datagram Protocol)
- 송신부와 수신부 간의 연결을 지원하지 않고 데이터 그램 형태의 통신 지원
- 하얀 도화지에 비유(기능이 거의 없음)
- 연결 지향 X - TCP 3 way handshake x
- 데이터 전달 및 순서가 보장되지 않지만, 단순하고 빠름
- 정리
- IP와 거의 같다 + PORT + 체크섬
- 체크섬(checksum) : 데이터의 무결성 보장하여 오류 검출로 최소한의 신뢰성을 보장한다.
- 애플리케이션에서 추가 작업 필요
- 하나의 pc에서 ip에서 어떤 애플리케이션인지 구분하는 방법 : port
- TCP는 느리기에 http3가 나오면서 최적화하기 위해 UDP를 사용하면서 뜨고 있음
패킷 교환 방식
TCP (전송 제어 프로토콜)
는 가상 회선 방식을 사용하고,UDP (사용자 데이터그램 프로토콜)
는 데이터그램 방식을 사용
패킷 교환 방식은 가장 많이 사용하는 데이터 통신 방식으로, 가상 회선을 이용한 방식과 데이터 그램을 이용한 방식이 있다.
- 가상 회선 방식 : 데이터를 주고받기 전에 패킷을 전송할 경로인 가상 회선을 설정해서 모든 패킷을 같은 경로로 전송한다.
- 데이터 그램 방식 : 패킷마다 최적의 경로로 전송되는 방식으로, 송신부에서 보낸 패킷의 순서와 수신부에 도착하는 패킷의 순서가 다를 수 있다.
4. PORT
즉, 같은 IP 내에서 프로세스를 구분하기 위한 것이 포트이다.
한 번에 둘 이상(서버와) 연결해야 한다면, 어떤 것에 대한 패킷인지 알 수 없다. 즉, 같은 IP 내에서 프로세스를 구분하기 위한 것이 포트이다.
예시
출발지 PORT와 목적지 PORT를 TCP 세그먼트가 포함하기 때문에 알 수 있다.
- 0 ~ 65535 할당 가능
- 0 ~ 1023: 잘 알려진 포트, 사용하지 않는 것이 좋음
- FTP - 20, 21
- TELNET - 23
- HTTP - 80
- HTTPS - 443
5. DNS
- IP는 기억하기 어렵다
- IP는 변경될 수 있다.
DNS(Domain Name System)
- 전화번호부
- 도메인 명을 IP 주소로 변환
- 숫자로 된 IP 주소를 사람이 이해하기 쉬운 문자 형태로 표현한 것
- 호스트 컴퓨터 이름(www), 소속 기관 이름(hankook), 소속 기관의 종류(co), 소속 국가명(kr) → www.hankook.co.kr
- 문자로 된 도메인 네임을 컴퓨터가 이해할 수 있는 IP 주소로 변환하는 역할을 하는 시스템을 DNS(Domain Name System)라고 하며, 이런 역할을 하는 서버를 DNS 서버라 함 ★
'개발지식 > CS 지식' 카테고리의 다른 글
비동기에서 각 맥락에 따른 의미 (0) | 2024.10.30 |
---|---|
서버 관련 CS 지식 (2) | 2024.10.25 |
API의 기초 개념 (0) | 2024.10.25 |
라이브러리? 프레임워크?의 차이점 (0) | 2024.10.25 |
안녕하세요. si 회사 소속 sm LMS 팀에 소속중인 1년차 백엔드 개발자입니다😀 함께 나누고 성장하는 것을 좋아해요. 언제든 디스코드나 구글 메일로 질문해도 됩니다!
⭐ 잘못된 내용은 댓글 적어주세요 :)