인터넷 통신
클라이언트와 서버가 어떻게 통신할까? 둘 사이가 멀지 않다면 그냥 통신하면 되지만,
만약 거리가 멀다면 인터넷을 통해 통신을 해야한다.
IP(인터넷 프로토콜)
클라이언트와 서버는 ip주소를 통해 서로 정보를 주고받는다.
이때 패킷이라는 통신 단위로 데이터를 전달한다.
패킷은 위와 같이 ip주소 등의 데이터를 가지고 있다.
정상적인 패킷의 흐름은 위와 같다.
하지만, 서버가 꺼져있거나, 중간에 패킷이 사라지거나, 패킷이 순서대로 오지 않거나, 같은 ip를 사용하는 서버에서 통신하는 애플리케이션이 둘 이상이라면 문제가 발생할 수 있다
TCP, UDP
인터넷 프로토콜은 위와 같이 4계층으로 이루어져있다.
전체적인 프로토콜 계층은 다음과 같다.
애플리케이션 계층에서는 웹브라우저가 있고, 이 소켓을 OS에 전달한다. 이 때 TCP와 IP정보를 생성하여 패킷을 생성하고, Ethernet frame까지 씌워서 서버에 보낸다.
TCP 특징
전송제어 프로토콜
연결지향 -> 연결이 되었는지 확인되었을 때(서버가 정상적으로 작동할 때) 수신
데이터 전달 보증 -> 데이터가 잘 갔는지 확인 가능
순서보장
TCP 3 way handshake
이 과정은 클라이언트와 서버를 연결해주는 과정이다.
물리적으로 연결된 것은 아니고, 개념적으로 연결된 것이다.
데이터 전달 보증
서버가 데이터를 잘 받았다고 클라이언트에 전달함으로써 데이터 전달을 보증한다.
순서보장
또한 패킷3번이 패킷2번보다 늦게 도착했을 때 패킷 2번부터 다시 보내라는 신호를 보낼 수 있다.
이는 TCP에 순서 정보가 포함되어있기 때문이다.
UDP 특징
UDP는 기능이 거의 없다.
연결지향, 데이터 전달보증, 순서 보장 모두 못한다.
하지만 단순하고 빠르다는 장점이 있다.(들어가는 데이터도 많지 않다.)
IP와 거의 같지만, PORT와 체크섬정도만 추가되었다고 보면 된다.
만약 이 계층의 무언가를 수정하고싶다면 TCP를 건들지 못하고, UDP에 있는 것들에 커스텀 하면 된다.
PORT
이와 같이 하나의 서버에 두개의 연결이 있을 수 있다.
이때 각각의 패킷을 구별하기 위해서 필요한 것이 PORT이다.
TCP 패킷에는 출발지 포트와 도착지 포트 정보가 들어있다.
위 그림에서 게임서버로부터 클라이언트에 오는 패킷의 출발 포트번호는 11220이고, 도착 포트번호는 8090이다.
따라서 아파트로 비유하자면 IP주소는 아파트의 동 번호, 포트번호는 아파트의 호수라고 생각하면 된다.
포트번호는 65535까지 할당이 가능하지만, 1023까지는 잘 알려진 포트라 사용하지 않는 것이 좋다.
또한 HTTP의 포트번호는 80, HTTPS의 포트번호는 443이다. 배포할 때 필요하니까 기억하도록 하자
DNS
IP주소는 기억하기 어렵고, 변경될 수 있다는 단점이 있다.
따라서 이를 보완하기 위해 나온 것이 DNS이다.
전화번호부라고 생각하면 편하다!
DNS 서버는 전화번호부와 같이 도메인명과 IP주소를 가지고 있다.
따라서 사용자가 구글로 접속하게 되면 DNS서버에 있는 IP 주소에다가 데이터를 보낸다.
만약 IP가 바뀌어도 DNS 서버만 바꾸면 되니까 문제없다!
출처
https://www.inflearn.com/course/http-%EC%9B%B9-%EB%84%A4%ED%8A%B8%EC%9B%8C%ED%81%AC/dashboard
모든 개발자를 위한 HTTP 웹 기본 지식 강의 | 김영한 - 인프런
김영한 | , [사진] 📣 확인해주세요!본 강의는 자바 스프링 완전 정복 시리즈의 세 번째 강의입니다. 우아한형제들 최연소 기술이사 김영한의 스프링 완전 정복 로드맵을 먼저 확인해주세요. (바
www.inflearn.com
'CSE > 네트워크' 카테고리의 다른 글
[네트워크] HTTP 상태코드 (1) | 2025.03.28 |
---|---|
[네트워크] HTTP 메서드 활용 (2) | 2025.03.28 |
[네트워크] HTTP 메서드 (3) | 2025.03.27 |
[네트워크] HTTP 기본 (1) | 2025.03.25 |
[네트워크] URI와 웹 브라우저 요청 흐름 (4) | 2025.03.18 |