TCP Socket은 곧 user와 kernel 사이에 파일이라는 경로와 같은 형태
비전공자로 시작해서 이제 막 항해의 3주차 주특기를 배우는 입장에서
이 주제를 너무 깊이 파고들기엔 너무 이르다는 생각에 일단은
가볍게 진행 해보고자 한다.
컴퓨터의 구조
- 우리가 쓰는 컴퓨터는 크게 hardware와 software로 나뉘고,
- software에서 kernelmode와 usermode로 나뉘게 된다.
- usermode는 또 개념적인 부분에서 두가지로 servicelayer와 applicationlayer로 나누어 진다
Kernel mode
- 하드웨어에 직접적인 컨트롤이 가능한 영역
- 원하면 언제든지 user mode를 컨트롤 할 수 있을 정도로 권한이 크다.
User mode
- 이름 그대로 사용자가 직접 컨트롤 하는 영역
- kernel에 영역을 컨트롤 할 수 없고, service layer의 도움을 받아 사용자가 컨트롤 할 수 있다.
Process
- 컴퓨터에서 연속적으로 실행되고 있는 컴퓨터 프로그램
- 프로그램을 구동하여 프로그램 자체와 프로그램의 상태가
- 메모리 상에서 실행되는 작업단위
File
- user mode의 application이 kernel mode에 진입할 수 있도록
- 추상화된 인터페이스이자 유일한 수단 또는 경로
- 디바이스를 구동시키는 소프트웨어를 드라이버라고 하는데
- 드라이버있다고 장치를 사용할 수 없다.
- 왜냐하면 커널에는 각자 하드웨어가 가지는 고유한 드라이버들과
- 소통하는 또다른 구성요소들이 존재하기 때문이다.
- 그래서 하드웨어는 자신을 지원하는 운영체제에 설치될 수 있고,
- 지원되는 여러 운영체제에 하나의 드라이버만 가지고 설치될 수 있는 것이다.
- 구성요소를 다른것에 비유하자면 디스크 하드웨어를 예로 들었을때
- 디스크에는 드라이버가 있다. 그리고 디스크와 소통하는 구성요소가
- 바로 파일 시스템이다. (NTFS나 Fat32 등등)
- 그렇다면 그 파일시스템과 연결된 서비스 영역도 있을 것이다.
응용 프로그램과 Socket, TCP / IP
- 응용 프로그램과 소켓 그리고 TCP/IP의 관계를 구체적으로 나타냈다.
- 응용 프로그램에 존재하는 네트워크 응용 프로그램들은
- 데이터를 송수신 하기 위해 소켓을 거쳐 전송 계층(trasport layer)의
- 통신 망으로 전달함으로써 데이터를 송수신 하게 된다.
- 소켓은 그 사이에 위치하고 있으며,
- 응용 프로그램에서 TCP/IP를 이용하는 인터페이스 역할을 한다. (Socket Interface, 소켓 인터페이스)
- IP 주소 192.168.0.1은 이 컴퓨터에 배정된 IP 주소인데
- 예를들어 목적지 IP 주소가 192.168.0.1인 IP 패킷은 모두 컴퓨터로 전달된다.
TCP(Transmission Control Protocol) 란 ?
OSI 7Layer 중 4layer에 해당하는 Transport Layer에서 사용하는 Protocol이다.
사진에서 소켓이라고 써있는 곳이 Socket Interface가 이루어 지는 곳이며,
Socket Address(소켓 주소)에 의해 컴퓨터내 프로세스의 식별이 이루어진다.
통상적으로 IP Address 및 Port Address를 조합하여 Socket address라고 한다.
⇒ Socket address = IP Address(호스트 식별) + Port Address(프로세스 식별)
TCP/IP 소켓 연결이란 ?
로컬 시스템에서 분산된 TCP/IP 기반 네트워크 환경에서 응용 프로그램과 프로세스 간
통신에 필요한 루틴을 제공하며 P2P(peer-to-peer) 연결이 설정되면 소켓을 사용하여
연결을 고유하게 식별한다. 소켓 자체는 작업별 숫자 값이다.
소켓으로 설명되는 TCP/IP 기반 분산 네트워크 응용 프로그램의 P2P 연결의 한쪽 끝은
다음과 같이 고유하게 정의된다.
Internet Address (인터넷 주소)
- 예를 들면 127.0.0.1(IPv4 Network) 또는 FF01::101(IPv6 Network)를 가지는 형식
Communication protocol (통신 프로토콜)
- UDP (User Datagram Protocol)
- TCP (Transmission Control Protocol)
Port (포트)
- 응용 프로그램을 식별하는 숫자 값.
결론
- 약간 성급한 결론을 내자면, 프로그램과 커널이 통신할때는 파일을 이용하는데,
- TCP연결이 필요한 프로그램은 커널과 소켓을 이용해 통신한다.
(정확하게는 프로그램이라기 보다 프로세스라고 해야하지만, 이해하는데 편의상 프로그램이라고 비유했다.)
참고자료
What is a TCP/IP Socket Connection ?
What is a TCP/IP Socket Connection ?
A socket programming interface provides the routines required for interprocess communication between applications, either on the local system or spread in a distributed, TCP/IP based network environment. Once a peer-to-peer connection is established, a soc
www.ibm.com
GitHub - BJS-kr/Records: archive
archive. Contribute to BJS-kr/Records development by creating an account on GitHub.
github.com
컴퓨터 구조를 통해 이해하는 파일(File)과 소켓(Socket)
컴퓨터 구조를 통해 이해하는 파일(File)과 소켓(Socket)
이전 글을 통해 컴퓨터 구조의 큰-느낌은 알았다. 이제 실제로 컴퓨터가 어떻게 돌아가는지, 각 레이어끼리는 어떻게 데이터를 주고 받는지, 파일입출력과 네트워크 동작을 예로 들어서 공부해
velog.io
2.1 소켓의 이해
/*----------------------------------------------------------------------------------------------- 파일명 : open_socket.c 기 능 : socket() 시스템 콜을 호출하고, 생성된 소켓번호를 출력 컴파일 : cc -o open_socket open_socket.c -lsoc
jkkang.net
Network socket - Wikipedia
From Wikipedia, the free encyclopedia Jump to navigation Jump to search Software-based endpoint of network communications A network socket is a software structure within a network node of a computer network that serves as an endpoint for sending and receiv
en.wikipedia.org
5. TCP 연결과 해제
A라는 상태에서 어떤 과정을 거치면 B라는 상태가 될까 | TCP는 연결할 때 3-way handshake를 하며, 연결을 끊을 때는 4-way handshake를 진행한다. 여기서 handshake는 악수로 만나면 3번의 과정을 통해 악수
brunch.co.kr
'항해99 > 공부' 카테고리의 다른 글
RESTful API ? (0) | 2022.10.09 |
---|---|
주특기 주차 11조 (Node.js) 토론 (0) | 2022.10.04 |
HTTP / Web Server (0) | 2022.09.30 |
2022년 9월 17일 밤새도록 스파르톤 !! (1) | 2022.09.17 |
유튜브 인기동영상 api (0) | 2022.09.09 |