0. 소개
- 모든 것이 HTTP 기반 위에서 동작
- 개발자는 평생 HTTP 기반위에서 개발해야하므로 반드시 정리가 필요!
1. 인터넷 네트워크
[IP(인터넷 프로토콜)]
- 인터넷에서 컴퓨터 둘은 어떻게 통신할까?
- IP(인터넷 프로토콜)
- 지정한 IP 주소(IP Adress)에 데이터 전달
- 패킷(Packet)이라는 통신 단위로 데이터 전달
- IP 패킷 정보
- 출발지 IP, 목적지 IP, 기타 ...
- IP(인터넷 프로토콜)
- IP 프로토콜의 한계
- 비연결성
- 대상이 서비스 불능, 패킷 전송
- 비신뢰성
- 패킷 소실
- 패킷 전달 순서 문제 발생
- 프로그램 구분
- 같은 IP를 사용하는 서버에서 통신하는 애플리케이션이 둘 이상이라면?
- 비연결성
-> 이런 문제를 해결해주는 것이 TCP, UDP
[TCP, UDP]
- 인터넷 프로토콜 스택의 4계층
- 애플리케이션 계층 - HTTP, FTP
- 전송 계층 - TCP, UDP
- 인터넷 계층 - IP
- 네트워크 인터페이스 계층
- TCP/IP 패킷(패키지+버킷) 정보
- IP 패킷(출발지 IP, 목적지 IP, 기타) 안에 TCP 세그먼트
- 출발지 PORT, 목적지 PORT
- 전송 제어, 순서, 검증 정보... (IP만으로 해결 안됐던 부분이 해결 가능)
- IP 패킷(출발지 IP, 목적지 IP, 기타) 안에 TCP 세그먼트
- TCP 특징 (전송 제어 프로토콜/Transmission Control Protocol)
- 연결지향 - TCP 3 way hadshake (가상 연결)
- 먼저 연결 후 메세지 보냄
- 데이터 전달 보증
- 누락된 패킷 확인 가능
- 순서 보장
- 신뢰할 수 있는 프로토콜
- 현재는 대부분 TCP 사용
- 연결지향 - TCP 3 way hadshake (가상 연결)
- TCP 3 way handshake
-> 클라이언트, 서버 모두 SYN을 보내고 ACK함(메세지를 세번 주고받음) -> 서로 믿을 수 있음
--> 개념적으로만 연결된 것(논리적으로 클라이언트와 서버가 서로 연결이 됐구나, 전용 랜선 보장된 것 아님)
- 데이터 전달 보증
1. 데이터 전송
2. 데이터 잘 받았음 - 순서 보장
- 중간에 잘못오면 서버가 클라이언트에게 ~부터 다시 보내라 요청
- UDP 특징 (IP 계층 바로위에 있는 TCP와 같은 계층의 프로토콜)
- 하얀 도화지에 비유(기능이 거의 없음) -> 최적화 가능, TCP는 건드릴 수 없음
- 연결지향 - TCP 3 way hadshake X
- 데이터 전달 보증 X
- 순서 보장 X
- 데이터 전달 및 순서가 보장되지 않지만, 단순하고 빠름
- 정리
- IP와 거의 같다. +PORT(프로그램 구분용) +체크섬(메세지 맞는지 검증) 정도만 추가
- 애플리케이션에서 추가 작업 필요
- 왜 쓰냐? -> TCP는 데이터 양도 크고 시간도 걸림 손댈 수 없기 때문에 그대로 쓰고 UDP를 가지고 최적화
- e.g. HTTP3
[PORT]
- 한번에 둘 이상 연결해야 하면?
- 게임, 화상통화, 웹 브라우저 요청 .. -> 어떤 패킷인지 알 수 없음
- 하나의 클라이언트가 여러개의 서버와 통신해야함
- 서버 안에서 돌아가는 애플리케이션을 구분하는 것을 PORT (IP는 목적지 서버를 찾는것)
- 패킷 정보
- 출발지 IP, PORT
- 목적지 IP, PORT
- 전송 데이터 ...
- PORT - 같은 IP 내에서 프로세스 구분 (e.g. 몇동 몇호)
- PORT
- 0 ~ 65535 할당 가능
- 0 ~ 1023 : 잘 알려진 포트, 사용하지 않는 것이 좋음
- FTP - 20, 21
- TELNET - 23
- HTTP - 80
- HTTPS - 443 (HTTP에 보안이 추가)
[DNS]
- IP는 기억하기 어렵다, 변경될 수 있다. -> DNS 모두 해결
- DNS (Domain Name System)
- 전화번호부 ( DNS 서버에 도메인 명과 IP 주소 저장)
- 도메인 명을 IP 주소로 변환
- DNS 사용
1. 도메인 명으로 찾음
2. 해당 도메인 명의 IP 주소로 응답
3. 접속
더보기
1. 인터넷 네트워크 정리 끝 ~
- 인터넷 통신
- IP(Internet Protocol)
- TCP, UDP
- PORT
- DNS
내일 나머지 강의 다 끝낸다 !😎
'HTTP 웹 기본 지식' 카테고리의 다른 글
[모든 개발자를 위한 HTTP 웹 기본 지식] 6. HTTP 상태코드 (0) | 2023.03.27 |
---|---|
[모든 개발자를 위한 HTTP 웹 기본 지식] 5. HTTP 메서드 활용 (0) | 2023.03.26 |
[모든 개발자를 위한 HTTP 웹 기본 지식] 4. HTTP 메서드 (0) | 2023.03.26 |
[모든 개발자를 위한 HTTP 웹 기본 지식] 3. HTTP 기본 (0) | 2023.02.16 |
[모든 개발자를 위한 HTTP 웹 기본 지식] 2. URI와 웹 브라우저 요청 흐름 (0) | 2023.02.16 |