인터넷에서 컴퓨터가 통신하는 방법?
컴퓨터끼리 통신은 요청과 응답으로 이뤄진다. 옆에 있는 컴퓨터라면 그렇겠지..
그런데 이게 인터넷을 통한다면 어떻게 될까?
클라이언트는 서버에 요청을 보내지만 바로 가지 못한다. 인터넷에 있는 수많은 노드들을 거쳐서 갈 수 있는데
그래서 최소한의 규칙이 필요해진다.
내가 친구한테 택배를 보내는데 출발지와 도착지를 모른다면 택배가 올바르게 도착할 수 없듯이,
인터넷에서 통신하는 컴퓨터에서도 주소가 필요하다. 이때 IP가 등장한다.
IP 인터넷 프로토콜 역할
- 지정한 IP 주소 ( IP Address)에 데이터 전달
- 패킷(Packet)이라는 통신 단위로 데이터 전달
등의 특징을 가진다.
IP패킷의 특징은 출발지IP와 목적지IP를 담고 있다는 것이다. 하지만 IP프로토콜은 한계를 가짐.
IP 프로토콜의 한계 3가지
비 연결성 : 패킷을 받을 대상이 없거나 서비스 불능 상태여도 패킷 전송 ( 대상 서버가 패킷을 받을 수 있는 상태인지 모름, 연결 상태를 확인하지 않는다.)
비 신뢰성 : 중간에 패킷이 사라지면..??? 패킷이 순서대로 안오면? 신뢰할 수 없다. (패킷이 소실되면? 패킷들은 중간에 각기 다른 노드를 탈 수 있다. hello, world를 보냈는데 받는 곳에서 world hello,를 받으면?)
프로그램 구분 : 같은 IP를 사용하는 서버에서 통신하는 애플리케이션이 둘 이상이면..?
이때 등장하게 되는 TCP 그리고 UDP
전송계층 TCP UDP가 인터넷 계층의 IP를 보완하게 된다.
TCP 세그먼트에는 출발지, 목적지 포트, 전송 제어 , 순서 , 검증 정보가 담긴다.
TCP 전송 제어 프로토콜
1. 연결지향 : TCP 3 way handshake (가상 연결 - 개념적, 논리적으로만 연결됨, 물리적으론x), 쟤랑 나랑 연결이 됐는지 확인! 먼저 연결!
2. 데이터 전달 보증 : 누락x
3. 순서 보장
-신뢰할 수 있는 프로토콜
-현재는 대부분 TCP사용
연결지향 ( 3 way handshake )
SYN : 접속 요청
ACK : 요청 수락
위에서 아래로 총 3번 악수를 하게 된다.( 비유적 표현임 ) 세번의 과정을 모두 거쳐서 연결되면 그 후에
데이터를 전송한다. 요즘엔 최적화가 잘 되어 있어서 3번째 ack와 데이터 전송이 같이도 됨.
순서보장
패킷 1, 2,3 순서대로 전송했는데 패킷 1,3,2 순서로 도착하면
패킷 2부터 다시 보내라고 알려준다.
데이터 전달 보증
데이터가 잘 왔는지 확인하는 과정이 있다.
UDP사용자 데이터그램 프로토콜
하얀 도화지에 비유 ( 기능이 거의 없음)
데이터 전달 및 순서가 보장되지 않지만, 단순하고 빠르다.
IP와 거의 같다. + PORT+ 체크섬 정도만 추가
애플리케이션에서 추가 작업이 필요하다.
'TIL' 카테고리의 다른 글
벤더 프리픽스(Vendor Prefix) , 딱 정리하자 (4) | 2022.09.08 |
---|---|
브라우저별 스타일 잠깐 멈촤! RESET CSS / Normalize (2) | 2022.09.08 |
[css] width 속성의 초기값은 auto, 그 의미는? (0) | 2022.09.03 |
React '첫인상'과 JSX / state / Props (0) | 2022.08.18 |
단락회로 평가 (0) | 2022.08.10 |