먼저 파일이란?
- 컴퓨터가 저장하고 있는 데이터라고 할 수 있다.
- 소켓도 파일이라고 볼 수 있다.
그리고 프로토콜이란?
- 정보처리기사 내용
- 구문, 의미, 타이밍으로 구성
- 데이터를 안전하게 주고 받기 위한 약속
- 구문 : 패킷의 데이터 구조를 어떤 구조로 만들지 약속하는 것, 프로토콜마다 다른 구조를 가지고 있다. (소켓을 이해하는데 이 부분만 있으면 될 것 같다.)
그럼 패킷은 또 뭔가
- 바로 소켓이라는 파일에 적히는 데이터의 형태, 즉 소켓에 담기는 데이터가 되겠다.
- 소켓의 형태는 위에서 설명한 프로토콜의 종류에 따라 정해진다.
마침내 소켓이란?
- 패킷을 담는 파일이자, 통신에 사용되는 파일, 통신에 필요한 데이터를 담는 파일 되시겠다.
- 서로 다른 두 컴퓨터가 있다고 가정해보자
- 그들은 각자 고유의 ip를 가지고 각자 여러개의 포트를 가지고 있다.
- 즉 , 각자 < ip , port번호 > 쌍을 가질 수 있다.
- 이렇게 ip, port번호의 조합을 엔드포인트라고 한다.
- 엔드포인트를 연결시키는게 소켓이다.
- << ip1 , port번호1 > , < ip2 , port번호2 >> 이런 느낌
- 소켓에 있는 상대방 ip로 컴퓨터 찾고, port번호로 응용프로그램을 찾아서 통신한다.
- 조금 더 구체적으로 말하자면 , 소켓은 네트워크 상에서 작동하고 있는 두 개의 프로그램 간 양방향 통신을 위한 하나의 엔트 포인트라고도 할 수 있다.
(<< ip1 , port번호1 > , < ip2 , port번호2 >> 이것도 조합이니까)
통신 과정
- 보통 서버는 특정 포트(응용프로그램용)가 바인딩된 소켓을 가지고 특정 컴퓨터 위에서 돌아가고 있다.
- 누가 연결 요청을 하는지 소켓을 통해 리스닝하면서 하염없이 기다린다.
- 서버 : << 서버 ip , 서버 port번호 > , < >> 이 상태로 기다림
- 클라이언트는 서버가 떠 있는 컴퓨터의 호스트네임( DNS를 통해 ip로 변환 가능한 )과 서버가 리스닝하고 있는 포트 번호를 알고 있다.
- 클라 : << 서버 ip , 서버 port번호 > , < >> 이거 알고있음
- 클라이언트가 호스트 네임과 포트를 통해서 서버와 연결을 시도
- 클라 : 연결하고 싶을 때 자기 ip랑 port번호 + 알고있는 서버의 소켓을 이용해서 연결 시도
- 정상 연결시
- 서버 : <<서버 ip, port번호 > , < 클라 ip, port번호 >> And << ip, port번호 > , < >>
- 서버는 왜 새로 소켓을 생성하는가?
- 보통 다른 요청도 계속 받아야해서
- 한명한테만 연결가능한 서버라면 안 만들어도 되듯?
- 이제 클라이언트는 소켓을 이용해서 서버와 통신할 수 있다.
- 서로 소켓에 데이터(패킷)를 쓰거나 읽음으로써 서로 통신 가능
추가
- 소켓 통신 연결을 할때 처음에 소켓통신 할래? 라고 요청하는건 http로 함
REF
출처 & 참고문헌
- https://www.daleseo.com/what-is-a-socket/
- https://www.youtube.com/watch?v=4-6_o9FfQe0
- https://www.youtube.com/watch?v=3jQ2dBpiqPo
(초보자가 혼자 공부한 내용을 정리하기 위한 글입니다. 잘못된 내용이나 추가로 필요한 내용이 보이시면 편하게 말씀해주세요)
'CS' 카테고리의 다른 글
SOLID원칙의 간단한 정리 (0) | 2024.06.23 |
---|---|
C언어의 컴파일 과정 (1) | 2023.12.22 |
자바 인코딩의 원리 (2) | 2023.11.08 |
API (Application Programming Interface ) 개념 설명 (0) | 2023.06.21 |
추상클래스와 인터페이스 (0) | 2023.05.29 |
먼저 파일이란?
- 컴퓨터가 저장하고 있는 데이터라고 할 수 있다.
- 소켓도 파일이라고 볼 수 있다.
그리고 프로토콜이란?
- 정보처리기사 내용
- 구문, 의미, 타이밍으로 구성
- 데이터를 안전하게 주고 받기 위한 약속
- 구문 : 패킷의 데이터 구조를 어떤 구조로 만들지 약속하는 것, 프로토콜마다 다른 구조를 가지고 있다. (소켓을 이해하는데 이 부분만 있으면 될 것 같다.)
그럼 패킷은 또 뭔가
- 바로 소켓이라는 파일에 적히는 데이터의 형태, 즉 소켓에 담기는 데이터가 되겠다.
- 소켓의 형태는 위에서 설명한 프로토콜의 종류에 따라 정해진다.
마침내 소켓이란?
- 패킷을 담는 파일이자, 통신에 사용되는 파일, 통신에 필요한 데이터를 담는 파일 되시겠다.
- 서로 다른 두 컴퓨터가 있다고 가정해보자
- 그들은 각자 고유의 ip를 가지고 각자 여러개의 포트를 가지고 있다.
- 즉 , 각자 < ip , port번호 > 쌍을 가질 수 있다.
- 이렇게 ip, port번호의 조합을 엔드포인트라고 한다.
- 엔드포인트를 연결시키는게 소켓이다.
- << ip1 , port번호1 > , < ip2 , port번호2 >> 이런 느낌
- 소켓에 있는 상대방 ip로 컴퓨터 찾고, port번호로 응용프로그램을 찾아서 통신한다.
- 조금 더 구체적으로 말하자면 , 소켓은 네트워크 상에서 작동하고 있는 두 개의 프로그램 간 양방향 통신을 위한 하나의 엔트 포인트라고도 할 수 있다.
(<< ip1 , port번호1 > , < ip2 , port번호2 >> 이것도 조합이니까)
통신 과정
- 보통 서버는 특정 포트(응용프로그램용)가 바인딩된 소켓을 가지고 특정 컴퓨터 위에서 돌아가고 있다.
- 누가 연결 요청을 하는지 소켓을 통해 리스닝하면서 하염없이 기다린다.
- 서버 : << 서버 ip , 서버 port번호 > , < >> 이 상태로 기다림
- 클라이언트는 서버가 떠 있는 컴퓨터의 호스트네임( DNS를 통해 ip로 변환 가능한 )과 서버가 리스닝하고 있는 포트 번호를 알고 있다.
- 클라 : << 서버 ip , 서버 port번호 > , < >> 이거 알고있음
- 클라이언트가 호스트 네임과 포트를 통해서 서버와 연결을 시도
- 클라 : 연결하고 싶을 때 자기 ip랑 port번호 + 알고있는 서버의 소켓을 이용해서 연결 시도
- 정상 연결시
- 서버 : <<서버 ip, port번호 > , < 클라 ip, port번호 >> And << ip, port번호 > , < >>
- 서버는 왜 새로 소켓을 생성하는가?
- 보통 다른 요청도 계속 받아야해서
- 한명한테만 연결가능한 서버라면 안 만들어도 되듯?
- 이제 클라이언트는 소켓을 이용해서 서버와 통신할 수 있다.
- 서로 소켓에 데이터(패킷)를 쓰거나 읽음으로써 서로 통신 가능
추가
- 소켓 통신 연결을 할때 처음에 소켓통신 할래? 라고 요청하는건 http로 함
REF
출처 & 참고문헌
- https://www.daleseo.com/what-is-a-socket/
- https://www.youtube.com/watch?v=4-6_o9FfQe0
- https://www.youtube.com/watch?v=3jQ2dBpiqPo
(초보자가 혼자 공부한 내용을 정리하기 위한 글입니다. 잘못된 내용이나 추가로 필요한 내용이 보이시면 편하게 말씀해주세요)
'CS' 카테고리의 다른 글
SOLID원칙의 간단한 정리 (0) | 2024.06.23 |
---|---|
C언어의 컴파일 과정 (1) | 2023.12.22 |
자바 인코딩의 원리 (2) | 2023.11.08 |
API (Application Programming Interface ) 개념 설명 (0) | 2023.06.21 |
추상클래스와 인터페이스 (0) | 2023.05.29 |