혼자 정리
[HTTP기본지식] 인터넷 네트워크 본문
강의를 듣고 혼자 메모한 내용입니다.
클라이언트와 서버가 인터넷을 사이에 끼고 어떻게 통신?
IP 주소라는 규칙을 통해 통신
- 클라이언트와 서버가 IP주소를 부여받음
- 클라이언트가 IP 패킷을 만들어서 보냄
- 출발 IP 주소, 목적 IP 주소 etc. 포함
- 인터넷 망에서 목적 주소를 향해 패킷이 전달됨
- 서버가 패킷을 받아서 요청에 대한 응답을 보냄
IP 프로토콜의 한계
- 비연결성
- 비신뢰성
- 프로그램 구분
- 한 IP에서 통신하는 앱이 여러 개일 때 어떻게 대응?
그래서 등장한 것이..
TCP / UDP
인터넷 프로토콜 스택의 4계층
- 애플리케이션 계층 - HTTP, FTP
- 전송 계층 - TCP, UDP
- 인터넷 계층 - IP
- 네트워크 인터페이스 계층
구체적으로 어떻게?
예시)
- 프로그램이 Hello, world! 메시지 생성
- 소켓 라이브러리 통해 OS로 전달(여기까지 애플리케이션)
- TCP 정보 생성, 메시지 데이터 포함
- IP패킷 생성, TCP 데이터 포함(여기까지 OS 역할)
- 네트워크 인터페이스가 넘겨받아서 인터넷으로 보냄
IP 패킷이 담는 정보(추가되는 부분만)
- 출발지 IP, 목적지 IP, 기타 정보
TCP/IP 패킷 정보
- 출발지 PORT, 목적지 PORT, 전송 제어, 순서, 검증 정보 등등
- IP의 한계를 해결하기 위한 것임을 알 수 있음
TCP 특징(전송 제어 프로토콜; Transmission Control Protocol)
- 연결지향 - TCP 3 way handshake(가상 연결)
- SYN: 접속 요청, ACK: 요청 수락
- 클라이언트가 서버에 SYN보냄
- 서버가 알았다고 ACK를 보내면서 비슷하게 SYN 보냄
- 클라이언트는 서버가 보낸 SYN에 대해 ACK 보냄(여기서 ACK에 데이터 같이 전송시킬 수 있음. 요새는 최적화가 되어서..)
- 그러면 2.에서 ACK가 안 오면 서버에서 응답이 없는 것을 알고(문제라는 걸 알고) 클라이언트는 데이터를 보내지 않을 것
- cf) 여기서 연결된 것은 물리적인 연결이 아니라 개념적인 연결
- SYN: 접속 요청, ACK: 요청 수락
- 데이터 전달 보증
- 클라이언트가 서버에 데이터 보냈을 때 서버도 데이터 잘 받았다는 응답을 보내줌
- 그래서 전달이 되었음을 보장할 수 있음
- 순서 보장
- 서버가 받은 패킷 순서가 잘못되면 잘못된 부분부터 다시 보내달라고 클라이언트에 요청(최적화 안했을 때 기본적인 경우)
- 순서 정보, 검증 정보, 전송 제어 정보 등을 통해 확인하는 것
UDP 특징(사용자 데이터그램 프로토콜; User Datagram Protocol)
- 기능이 거의 없음
- TCP의 특징 x
- IP와 거의 같은데 PORT, 체크섬 정도 추가
- PORT통해 같은 서버에서 어떤 애플리케이션을 위한 데이터인지 알 수 있음
- 체크섬을 통해 메시지가 맞는지 검증
- 간단하니까 빠르고 데이터 크기가 작다는 장점
- TCP는 이미 확고하게 되어 있어서 건드리기 힘듦
- 만약 뭔가 새롭게 최적화된 프로토콜을 구현하고 싶으면 UDP위에 애플리케이션 계층에서 씌워주면 됨(최근에 UDP가 각광받는 이유)
- HTTP3의 경우 3way 핸드쉐이킹까지 최적화해보자 하면서 UDP사용
PORT
역할 : 같은 IP 내에서 프로세스를 구분 가능하도록
포트 숫자별 쓰임새
- 0 ~ 65535 : 기본적으로는 모두 할당 가능
- 0 ~ 1023: 잘 알려진 용도로 보통 사용되기 때문에 사용하지 않는 것이 좋다
- FTP - 20, 21
- TELNET - 23
- HTTP - 80
- HTTPS - 443
DNS(도메인 네임 시스템; Domain Name System)
IP의 단점 : 기억하기 어렵, 변경될 수 있음
DNS 서버에 도메인 명에 IP가 연결되어 있음
- DNS서버에 도메인 명을 물어보면 됨
'네트워크' 카테고리의 다른 글
[네트워크이론] 2.4 DNS (0) | 2023.12.30 |
---|---|
[네트워크이론] 2.3 인터넷 전자메일 (0) | 2023.12.29 |
[네트워크이론] 2.2 웹과 HTTP (0) | 2023.12.29 |
[네트워크이론] 2.1 네트워크 애플리케이션 원리 (1) | 2023.12.24 |
[네트워크이론] 1. 컴퓨터 네트워크와 인터넷 (0) | 2023.12.23 |