[네트워크] 인터넷 네트워크

·2023년 8월 13일

CS

목록 보기
1/11

인터넷 통신은 어떻게 이루어질까?

IP (인터넷 프로토콜)

주소지라고 생각하면 좋다.
우리가 택배를 시킬 때 (데이터를 요청할 때) 배송지를 적어야 하는 것 처럼,
지정한 IP주소로, 패킷 단위로 데이터를 전달한다.

IP 패킷 정보

출발지 IP, 목적지 IP, 기타 데이터 등으로 전송데이터를 감싼다.


클라이언트, 서버는 IP 패킷에 담긴 정보에 따라 정보를 보내고, 받는다.

IP 프로토콜의 한계

비연결성
패킷을 받을 대상이 없거나 서비스 불능 상태여도 패킷 전송
비신뢰성
중간에 패킷이 사라지면?
패킷이 순서대로 안오면?
프로그램 구분
같은 IP를 사용하는 서버에서 통신하는 애플리케이션이 둘 이상이면?

얘를 해결 하는 것이 TCP/UDP

인터넷 프로토콜 스택의 4계층

프로토콜 계층


소켓 라이브러리가 Hello World라는 메세지를 OS로 보내고, OS의 TCP, IP패킷이 순서대로 메세지를 감싸 네트워크 인터페이스로 보낸다. 여기서 또 이더넷 프레임으로 한번 더 감싸 서버로 전송한다.

TCP/IP 패킷 정보


TCP 세그먼트를 통해 전송 제어, 순서 등 기존 IP패킷으로 해결할 수 없었던 정보들을 집어넣는다.

TCP(전송 제어 프로토콜) 특징

연결지향 - TCP 3 way handshake (가상 연결)


요즘은 최적화가 잘 되어서 3번의 ACK를 보낼 때 데이터도 같이 전송한다고 함
개념적으로만 연결 된 것이다!

데이터 전달 보증

순서 보장

신뢰할 수 있는 프로토콜. 현재는 대부분 TCP 사용

UDP(사용자 데이터그램 프로토콜) 특징은?

UDP는 TCP와 같은 계층의 프로토콜
• 하얀 도화지에 비유(기능이 거의 없음)
• 연결지향 X - TCP 3 way handshake X
• 데이터 전달 보증 X
• 순서 보장 X
• 데이터 전달 및 순서가 보장되지 않지만, 단순하고 빠름

정리
• IP와 거의 같다. +PORT +체크섬 정도만 추가
• 애플리케이션에서 추가 작업 필요

PORT


클라이언트가 IP가 필요한 (게임, 화상통화 등) 여러 프로그램을 돌리고 있을 때, 서버로부터 받은 데이터를 어느 프로그램에 써야하는지 알 수가 없다. 반대로도 마찬가지
이를 해결하는 것이 PORT!
같은 IP 내에서 프로세스 구분을 시켜준다
포트에 대한 정보는 TCP에 담겨져있다.
따라서 클라이언트/서버는 데이터를 어디로 받아야하는지, 보내야하는지 알 수 있다.

DNS (도메인 네임 시스템)

IP는 기억하기 어려울 뿐더러, 변경될 수 있다.
DNS 서버는 전화번호부같은 서버를 제공해준다. 이는 도메인 명을 IP주소로 바꿔준다.

profile
풀스택 호소인

0개의 댓글