IP와 포트의 관계에 대해서 설명을 한 적이 있는데
이번에는 포트와 소켓의 차이에 대해 기록을 남기게 되었습니다..
포트와 소켓은 접하기 쉽지만 개념에 대해 물어보면
정확하게 답변 하는 사람은 많이 없을거라고 생각합니다.
포트란 무엇인가?
포트는 통신을 할 때 특정 서비스를 이용하기 위한 연결고리입니다.
나는 인터넷 서비스를 이용하고 싶으니까 우리 80포트로 서로 인터넷하자!
그럼 80번 포트로 설정을하고 통신을 하면 인터넷을 이용 할 수 있습니다.
A이용자 와 B이용자가 80번 포트로 지정을 했을 때 서비스가 이용가능
A이용자가 81번 포트 설정 / B이용자가 80번 포트 설정 => 통신x
통신을 하기위해 포트를 지정하고 서비스를 이용해야 합니다.
인터넷 말고도 평소에 잘 사용하지 않지만 FTP / Telnet 서비스등
고유의 포트를 지정하고 사용 합니다.
-생각해보기-
왜 포트를 지정 해서 사용할까요???
왜 포트라는 개념을 만들어서 사용하고 있는 걸까요?
소켓은 무엇인가?
소켓은 포트랑 매우 연관성이 있습니다.
네이버를 예로 설명을 하겠습니다.
네이버 대표적인 사이트 답게 이용자수도 많습니다.
그만큼 통신도 많이 이뤄지고 있습니다.
다수의 사람이 뉴스를 보려고 클릭을 하는데 한 사람씩 볼 수 있다면 어떻게 될까요?
네이버는 서비스 운영을 못 하게 될 것입니다.
1초에 1명씩 처리 한다면 100번째는 100초 후에 처리를 하니까요.
소켓은 이러한 불편함을 해소해 줍니다.
처리할수 있는 곳이 1곳이 아닌 여러개를 지정해서
동시에 여러작업을 처리를 해주는 것이죠.
소켓을 통해 1000명 동시에 접근을 가능하게 해줍니다.
웹 브라우저창을 2개 열어서 웹서버에 동시에 접속을 하듯이 소켓도 여러개를 만들어서 웹브라우저 처럼 동시에 여러명이 접근을 할 수 있도록 도와준다.
소켓을 여러개를 만들면 고유번호가 필요한데 이때 "디스크립터" 라고 말하며 소켓의 번호라고 생각을 하면 된다! 프로세스 관리할때 PID가 있는 것처럼!!
- 소켓은 다음과 같은 요소들로 구성되어있다.
· 인터넷 프로토콜 (TCP, UDP, raw IP)
· 로컬 IP 주소
· 로컬 포트
· 원격 IP 주소
· 원격 포트
- 소켓에는 크게 2가지 유형이 있다. 연결지향형(TCP), 비연결 지향형(UDP) 이다.
정리
포트(Port)는 네트워크 상에서 통신하기 위해서 호스트 내부적으로 프로세스가 할당받아야 하는 고유한 숫자이다. 한 호스트 내에서 네트워크 통신을 하고 있는 프로세스를 식별하기 위해 사용되는 값이므로, 같은 호스트 내에서 서로 다른 프로세스가 같은 포트 넘버를 가질 수 없다.
소켓(Socket)은 프로세스가 드넓은 네트워크 세계로 데이터를 내보내거나 혹은 그 세계로부터 데이터를 받기 위한 실제적인 창구 역할을 한다. 그러므로 프로세스가 데이터를 보내거나 받기 위해서는 반드시 소켓을 열어서 소켓에 데이터를 써보내거나 소켓으로부터 데이터를 읽어들여야 한다.
소켓에서도 "디스크립터"라는 번호를 부여해서 동시 수용을 할 수 있도록 한다.
참고
https://min-310.tistory.com/24
'# Network > [ Network ]' 카테고리의 다른 글
[허언증/네트워크] 빅-엔디안(big-endian) / 리틀-엔디안(little-endian) (0) | 2019.12.08 |
---|---|
[허언증/네트워크] htonl() / htons() / ntohl() / ntohs() 바이트 순서 변환 (0) | 2019.12.07 |
[허언증/네트워크] URL / HTTP (0) | 2019.10.31 |
[허언증/네트워크] 네트워크 스캐닝 하는 방법(실습) (0) | 2019.03.27 |
[허언증/네트워크] IP와 Port(포트) 관계 (0) | 2019.03.25 |