| 일 | 월 | 화 | 수 | 목 | 금 | 토 |
|---|---|---|---|---|---|---|
| 1 | 2 | 3 | 4 | 5 | 6 | |
| 7 | 8 | 9 | 10 | 11 | 12 | 13 |
| 14 | 15 | 16 | 17 | 18 | 19 | 20 |
| 21 | 22 | 23 | 24 | 25 | 26 | 27 |
| 28 | 29 | 30 |
- redis
- Dead Letter Queue
- Routing Key
- 컨테이너
- DI
- 쿠버네티스
- securitycontextholderfilter
- @Transactional
- Web
- CORS
- 지연 로딩
- AWS
- Spring Data JPA
- MSA
- docker compose
- dockerhub
- @ComponentScan
- JPA
- docker
- 서블릿 컨테이너
- Spring
- DLQ
- mybatis
- kafka
- 스프링 부트
- JWT
- 페이징
- Spring Container
- JPQL
- JdbcTemplate
- Today
- Total
look-forest
인터넷 네트워크 본문
왜 HTTP가 중요한가?
앱과 서버의 통신이든 서버와 서버의 통신이든 전부 HTTP 기반 위에서 동작하기 때문이다.
앞으로 실무에 필요한 HTTP 이론의 전체 흐름을 정리하겠다.
먼저 HTTP는 네트워크 프로토콜이므로, 네트워크부터 간략히 복습하겠다.
인터넷 상에서 컴퓨터 간 통신 과정
먼저, 인터넷 프로토콜(IP)이 필요하다
IP의 역할: 라우터를 거쳐 지정한 IP 주소에 Packet 단위로 데이터 전달
클라이언트의 패킷 전달

서버의 패킷 전달

그런데, 인터넷 프로토콜(IP)만으론 부족하다
# IP의 한계
- 비연결성
패킷을 받을 대상이 없거나, 서비스 불능 상태에도 패킷을 전송한다
대상 서버가 패킷을 받을 수 있는 상태인지 모르기 때문이다 - 비신뢰성
중간에 패킷이 사라지거나, 패킷 순서가 바뀔 수 있다 - 프로그램 구분 불가
같은 IP를 사용하는 서버에서 통신하는 애플리케이션이 여러 개인 경우 구분할 수 없다
이를 보완하기 위한 것이
TCP 통신!
인터넷 프로토콜 스택의 4 계층
| 계층 | 역할 | 프로토콜 |
| 애플리케이션 계층 | 애플리케이션에서 쓰는 계층 / 메시지 생성 | HTTP, SMTP, FTP, Telnet, DNS |
| 전송 계층 | IP 보완 | TCP, UDP |
| 인터넷 계층 | 다른 네트워크의 목적지에 데이터 전달 / 라우팅, 포워딩 | IP, ICMP, DHCP |
| 네트워크 인터페이스 계층 | RAN에서 데이터 송수신 / 전기 신호로 변환 | Ethernet, Token Ring |
프로토콜의 계층 구조

- 트랜스포트 프로토콜: 메시지를 수신 프로세스의 소켓으로 전송
- Socket: 애플리케이션 프로세스와 전송 프로토콜 간의 인터페이스. 소켓은 port 번호로 식별.
트랜스포트 프로토콜
TCP/UDP
TCP는 IP를 보완한다

TCP: 전송 제어 프로토콜(Transmission Control Protocol)
신뢰할 수 있는 프로토콜.
다만 좀 느리다.
보완 수단
1. 연결 지향: 3 way handshake

2. 데이터 전달 보증: 확인응답번호, 타임아웃

3. 순서 보장: 순서번호, Sliding window

그 외 기능
4. 흐름 제어: 수신자가 소화할 수 있을 정도로만 데이터 전송
5. 혼잡 제어: 네트워크 혼잡을 막기 위해 송신자 억제
UDP: 사용자 데이터그램 프로토콜(User Datagram Protocl)
기능이 거의 없다(하얀 도화지에 비유된다).
단순하고 빠르다.
- 연결지향X, 데이터 전달 보장X, 순서 보장X
- 기본 기능만 수행: Multiplexing/Demultiplexing(PORT), 오류검출(checksum)
- 애플리케이션에서 추가 작업으로 커스텀 가능
PORT
[문제 상황] IP만 가지고는 프로세스를 구분할 수 없다.
[해결] Port Number로 같은 IP 내에서 프로세스 구분

0~65535까지 포트 번호로 사용하나,
0~1023번은 잘 알려진 포트로 이미 쓰이고 있다.
▷ HTTP-80 / HTTPS-443 / FTP-20,21 / TELNET-23
DNS(Domain Name System) - 인터넷의 디렉터리 서비스
like 전화번호부 서버
[문제 상황] IP는 기억하기 어렵고 변경될 수 있다
[해결] 전화번호부 역할을 하는 DNS 서버가, 도메인 명을 IP 주소로 변환해준다

참고 자료 & 이미지 출처
모든 개발자를 위한 HTTP 웹 기본 지식 (김영한 님)
컴퓨터 네트워킹 : 하향식 접근 7판 (JAMES F.KUROSE)
'Web > HTTP' 카테고리의 다른 글
| HTTP 메서드 활용 (0) | 2021.05.24 |
|---|---|
| HTTP 메서드 (0) | 2021.05.24 |
| HTTP 기본 (0) | 2021.05.17 |
| URI와 웹 브라우저 요청 흐름 (0) | 2021.05.17 |
| Cookie (0) | 2021.01.28 |