일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | |||
5 | 6 | 7 | 8 | 9 | 10 | 11 |
12 | 13 | 14 | 15 | 16 | 17 | 18 |
19 | 20 | 21 | 22 | 23 | 24 | 25 |
26 | 27 | 28 | 29 | 30 | 31 |
- 프로그래머스 알고리즘 공부
- algorithmTest
- 독후감
- 책을알려주는남자
- 프로그래밍언어
- 투자
- 자바스크립트
- 지혜를가진흑곰
- 알고리즘공부
- 채권
- C
- JavaScript
- algorithmtraining
- Java
- 주식
- 재테크
- 경제
- 자바
- 화장품
- C++
- 책알남
- 서평
- 독서
- 백준알고리즘
- 알고리즘트레이닝
- algorithmStudy
- 알고리즘 공부
- 돈
- 다독
- 성분
- Today
- Total
탁월함은 어떻게 나오는가?
[Java] 소켓(SOCKET) 이란? 본문
"소켓(Socket)"은 사전적으로 "구멍","연결","콘센트"등의 의미를 가집니다. 주로 전기 부품을 규격에 따라 연결할 수 있게 만들어진 "구멍 형태의 연결부"를 일컫는 단어인데, 가정에서 흔히 볼 수 있는 콘센트 구멍을 떠올리면 쉽게 이해할 수 있을 것입니다. 다시 한번 풀어서 쓰자면, 전기를 필요로 하는 디바이스 또는 부품들이 전기를 공급받을 수 있도록, 전기 공급 인프라 환경에 연결할 수 있게 만들어진 연결부가 "소켓"인 것입니다.
소켓은 프로토콜, IP주소, 포트 넘버로 정의됩니다. 네트워크 프로그맹에서의 소켓에 대한 의미도, 사전적 의미와 큰 차이가 없습니다. 프로그램이 네트워크에서 데이터를 송수신할 수 있도록, "네트워크 환경에 연결할 수 있게 만들어진 연결부"가 바로 "네트워크 소켓"입니다.
그렇지만, 엄밀히 따지자면, "네트워크 소켓"이라는 용어가 정확한 표현은 아닙니다. 전기 소켓이 전기를 공급받기 위해 정해진 규격(220V 등)에 맞게 만들어져야 하듯, 네트워크 연결하기 위한 소켓 또한 정해진 규약, 즉, 통신을 위한 프로토콜(Protocol)에 맞게 만들어져야 합니다.
그렇게 맞춰진 소켓(SOCKET)은 프로세스가 네트워크 세계로 데이터를 내보내거나 혹은 그 세계로부터 데이터를 받기 위한 실제적인 창구 역할을 합니다. 그러므로 프로세스가 데이터를 보내거나 받기 위해서는 반드시 소켓을 열어서 소켓에 데이터를 써보내거나 소켓으로부터 데이터를 읽어들여야 합니다
1) 프로토콜
프로토콜은 원래 외교상의 언어로써 의례나 국가간에 약속을 의미하며, 통신에서는 어떤 시스템이 다른 시스템과 통신을 원활하게 수용하도록 해주는 통신 규약, 약속
2) IP
전 세계 컴퓨터에 부여된 고유의 식별 주소
3) 포트(port)
포트는 네트워크 상에서 통신하기 위해서는 호스트 내부적으로 프로세스가 할당받아야 하는 고유한 숫자이다. 한 호스트 내에서 네트워크 통신을 하고 있는 프로세스를 식별하기 위해 사용되는 값이므로, 같은 호스트 내에서 서로 다른 프로세스가 같은 포트넘버를 가질 수 없습니다. 즉, 같은 컴퓨터 내에서 프로그램을 식별하는 번호입니다.
소켓 종류
스트림(TCP)
- 양방향으로 바이트 스트림으로 전송, 연결 지향성
- 오류 수정, 전송처리, 흐름제어 보장
- 송신된 순서에 따라 중복되지 않게 데이터를 수신 > 오버헤드가 발생
- 소량의 데이터보다 대량의 데이터 전송에 적합 > TCP를 사용
데이터그램(UDP)
- 비연결형소켓
- 데이터의 크기에 제한이 있음
- 확실하게 전달이 보장되지 않음, 데이터가 손실되도 오류가 발생하지 않음
- 실시간 멀티미디어 정보를 처리하기 위해 주로 사용 ex) 전화
'[Snow-ball]프로그래밍(컴퓨터) > java' 카테고리의 다른 글
해쉬맵(HashMap), 그리고 사용방법코드 (0) | 2021.01.28 |
---|---|
뮤텍스(Mutext), 세마포어(Semaphore), 스핀락(Spinlock), 레이스 컨디션(Race condition), 동기화(Syschronezed), 크리티컬 섹션(Critical Section) 에 대해서 (0) | 2021.01.27 |
[Java] 컬렉션즈 프레임워크 [ Collections Framework ] (0) | 2021.01.17 |
[Java] String클래스 : contains (문자열 포함 유무 확인) (0) | 2021.01.15 |
[Java] While문 (반복문의 문법) (0) | 2021.01.15 |