궁금증 정리

김현우·2024년 10월 31일
0

네트워크

목록 보기
2/8
post-thumbnail

한 프로세스가 점유할수 있는 포트의 개수

65535개 (16바이트)
극단적인 경우에 모든 포트를 한 프로세스에게 할당시켜줄수 있음

소켓

소켓을 프로세스간 데이터 통신을 위한 "문" 이라고 설명했는데 이때문에 약간 헷갈렸음
IP는 host(인터넷에 접속중인 컴퓨터)의 주소이며, port는 프로세스에게 할당된 식별자임.

특정한 서버의 특정 프로세스에 접근하기 위해서 IP와 port가 필요하며 
이 한 쌍은 모든 인터넷 내에서 "유일"하게 존재한다.

이 조합을 우리는 소켓이라 부른다. 즉, 소켓이란 IP와 port의 조합인 셈.
문이라기 보다는 주소와 동호수 라고 생각하자.

커넥션(TCP에서)

TCP는 연결 지향적인 프로토콜이기에 connection이 존재한다.
connection에는 client의 소켓과 server의 소켓이 연결되는 것이며
이때 이 한쌍의 소켓이 가진 정보를 통해 connection의 식별자를 만들수 있다.

또한 한 소켓은 여러 커넥션을 만들어 낼수 있다.

UDP에서는?

UDP는 연결 지향적이지 않다.
심지어 RFC 768에서는 socket이라는 말 조차 등장하지 않았다.
아마도 TCP connection을 위해 사용했다가 나중에 UDP에도 들어온게 아닐까?

아무튼 이때문에 socket에는 <protocol,Ip address, port> 의 정보가 존재한다.

둘 이상의 프로세스가 같은 포트 번호를 사용가능하냐?

불가능하다. socket의 값이 모두 같은 socket은 존재해선 안된다(하나만 있어야함)
따라서 같은 프로세스가 한 포트를 쓰는것은 불가능하다.
하지만 프로토콜이 다르다면 가능하다.

한 포트번호에 여러 사용자가 접근 가능한가?

가능하다. 
한 socket이 여러 connection을 가질수 있냐라는 의미인데 이것은 위에서 가능하다고 했다.
또한 socket은 도구 등이 아닌 Ip+port의 조합이므로 포트만 동일하다면 모두 동일한 프로세스에 접근하며
UDP의 경우 어플리케이션 레이어(OSI 7에선 세션레이어)에서 처리에 대한 규칙을 지정해 줘야한다.
(ex. 멀티 스레딩 등)
어차피 socket은 주소의 역할이고 어떤 정보를 요구하고 어디로 보내야 하는지는 패킷의 헤더에 붙어오니
그것만 읽어서 처리해주면 됌
TCP의 경우에는 connection을 통해서이고 UDP는 알아서 잘 하면 되고

참고자료
https://lostbyte.org/can-udp-and-tcp-use-the-same-port/
https://medium.com/fantageek/understanding-socket-and-port-in-tcp-2213dc2e9b0c
https://stackoverflow.com/questions/3329641/how-do-multiple-clients-connect-simultaneously-to-one-port-say-80-on-a-server

profile
학생

0개의 댓글