TIL(Today I Learned)
12월 16일(토)
공부한 내용을 제 언어로 빠르게 정리한 내용이라서 잘못된 내용이 있을 수 있습니다.
모든 개발자를 위한 HTTP 웹 기본 지식
인터넷 통신
-
클라이언트 서버는 인터넷 망을 통해 연결되어 있다.
-
수많은 노드들이 중간에 있다.
-
그래서 IP가 필요하다.
인터넷 프로토콜 (IP)
-
지정한 IP 주소에 데이터 전달
-
패킷이라는 통신 단위로 데이터 전달
-
인터넷 프로토콜에 의해 패킷에 지정된 IP주소에 맞게 노드들끼리 패킷을 전달
-
한계
-
비연결성
- 패킷 받을 상대가 없거나 불능
-
비신뢰성
-
패킷이 중간에 사라지거나
-
패킷이 순서대로 안올경우
-
-
프로그램 구분
- 같은 IP 서버에서 통신하는 애플리케이션이 둘 이상일 경우
-
-
이러한 한계를 위해 필요한 것이 TCP
TCP, UDP
- 4계층
- 애플리케이션 계층: HTTP, FTP
- 전송 계층: TCP, UDP
- 인터넷 계층: IP
- 네트워크 인터페이스 계층
- 프로토콜 계층
- 프로그램이 Hello world! 메시지 생성
- 소켓 라이브러리를 통해 전달
- TCP 정보 생성 > 메시지 데이터 포함
- IP 패킷 생성 > TCP 데이터 포함
- IP 패킷 정보
- 출발지 IP, 목적지 IP, 전송데이터, 기타….
- TCP/IP 패킷 정보
- IP 패킷: 출발지 IP, 목적지 IP, 전송데이터, 기타….
- TCP 세그먼트: 출발지 포트, 목적지 포트, 전송제어 순서, 검증정보…
- TCP 특징
- 전송 제어 프로토콜
- 연결 지향 - TCP 3 way handshake(가상 연결)
- 데이터 전달 보증
- 순서 보장
- 신뢰할 수 있는 프로토콜
- 현재는 대부분 TCP 사용
- TCP 3 way handshake
- 클라이언트 > SYN(접속 요청)
- 서버 > SYN + ACK
- 클라이언트 > ACK (요청 수락)
- SYN: 접속 요청
- ACK: 요청 수락
- 개념적 연결이 아닌 가상적 논리적 연결
- 데이터 전달 보증
- 데이터 전송
- 데이터 잘 받았음
- 순서보장
- 패킷 1, 2, 3 순서로 전송
- 패킷 1, 3, 2 순서로 도착
- 패킷 2부터 다시 보내
- UDP
- TCP와 같은 계층
- 하얀 백지
- IP와 거의 같음. 포트, 체크썸 정도만 추가
- 데이터 전달및 순서 보장되지 않지만 단순하고 빠름
- TCP처럼 3 핸드 쉐이크 필요 없어서 빠름
- 전송 제어 정보 등의 데이터를 넣지 않아도 됨
- 최근엔 UDP가 뜨고 있음 (HTTP3)
PORT
- 항구
- 하나의 IP 주소에 둘 이상 연결할 때 필요함
- IP 주소 + 포트번호 (애플리케이션, 프로세스 구분)
- IP 가 아파트 포트는 몇동 몇호
- 0~65535 할당 가능 / 0~1023 잘 알려진 포트 사용하지 않는 것이 좋음
- FTP - 20, 21
- TELNET - 23
- HTTP - 80
- HTTPS 443
DNS
- IP는 변경될 수 있다.
- 도메인 네임 시스템
- 도메인 명을 입력하면 DNS 서버에서 해당 도메인에 맞는 IP 주소를 전달해줌.
- IP 가 변경 되면 DNS 서버에서 도메인 명에 해당하는 IP 주소를 변경해주면됨.