Notice
Recent Posts
Recent Comments
Link
| 일 | 월 | 화 | 수 | 목 | 금 | 토 |
|---|---|---|---|---|---|---|
| 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 |
Tags
- 욕심쟁이 방법
- zsh theme
- Pager
- 터미널
- table status
- 순차탐색
- 오일러 경로
- mycli
- zsh
- 분할정복 방법
- oh-my-zsh
- MySQL
- 동적 프로그래밍 방법
- cs
- spring boot
- 인프런워밍업클럽
- 맥
- 티스토리챌린지
- Less
- VI
- 데이크스트라
- mysql 표 출력
- 스터디2기
- CS스터디
- mysql 표
- 이진탐색
- 인프런
- 오블완
- 알고리즘
- 네트워킹데이
Archives
- Today
- Total
Develop
18일차_TCP 를 이용한 Socket Programming 본문
안녕하세요!
오늘은 18일 (4주 4일차) 입니다.
오늘은 TCP 를 이용한 소켓 프로그래밍에 대해 학습했습니다.
수업들을 때는 소켓이라는게 생소해서 잘이해가 안됐는데, 블로그에 글 적으려고 자바의 정석 펼치고 읽으면서
통신 끝단에서 하는 프로그래밍이구나 ~ 하고 알게되고, 수업 때 사용한 프로젝트의 패키지나 클래스 들의 이름을 왜 그렇게 지었는지 이해가 됐다.
학습 내용
socket programming
- 소켓을 이용한 통신 프로그래밍
- 소켓이란 프로세스간의 통신에 사용되는 양쪽 끝단(endpoint)을 의미
- 자바에서는 java.net 패키지를 통해 소켓 프로그래밍을 지원함
TCP
- 연결 방식 : 연결기반(connection-oriented)
- 연결 후 통신 (ex. 전화기)
- 1 : 1 통신 방식
- 특징
- 데이터의 경계를 구분안함(byte-stream)
- 신뢰성 있는 데이터 전송
- 데이터의 전송순서가 보장됨
- 데이터의 수신여부를 확인함 (손실되면 재전송)
- 패킷을 관리할 필요가 없음
- UDP 보다 전송속도가 느림
- 관련 클래스
- Socket(프로세스간 통신 담당, InputStream, OutputStream 보유)
- ServerSocket(소켓 간 연결만 처리)
- 이 소켓들이 데이터를 주고받는 연결 통로가 입출력 스트림이며, 이 스트림들은 연결된 상대편 소켓의 스트림 들과 교차연결됨 (한 소켓의 입력스트림 -> 상대편 소켓의 출력스트림으로 연결됨)
TCP 소켓 프로그래밍
- 클라이언트와 서버간의 1 : 1 통신
- 먼저 서버프로그램이 실행되어 클라이언트 프로그램의 연결요청을 기다리고 있어야함 (아래는 통신과정)
- 서버 프로그램 : 서버소켓을 사용해서 서버컴퓨터의 특정 포트에서 클라이언트의 연결요청을 처리할 준비를 함
- 클라이언트 프로그램 : 접속할 서버의 IP 주소와 포트 정보를 가지고 소켓을 생성해서 서버에 연결을 요청함
- 서버 소켓 : 클라이언트의 연결 요청을 받으면 서버에 새로운 소켓을 생성해서 클라이언트의 소켓과 연결시킴
- 클라이언트 소켓 : 새로 생성된 서버의 소켓은 서버소켓과 관계없이 1 : 1 통신을 함
주말에 프로젝트를 뜯어봐야 완전히 이해가 될 것 같지만 이정도로도 오늘은 만족!
(어제까지만해도 이론만 공부했는데 오늘은 프로젝트 뜯어보기에 진입한것 같아서 좋다~! 이렇게 발전해나가면 되지...ㅋ)
오늘도 고생 많으셨습니다 ~~
'백엔드 > KDT_Programmers' 카테고리의 다른 글
| 20일차_Front(HTML-input, lable, datalist, CSS-selector, transform, display, position, flex 등) (0) | 2025.04.01 |
|---|---|
| 19일차_Annotation, Reflection, Front(HTML) (0) | 2025.03.31 |
| 17일차_MVC2 패턴 (0) | 2025.03.27 |
| 16일_Git 과 GitHub (0) | 2025.03.25 |
| 15일차_SQL(View, Procedure, Function, Trigger, JDBC 등) (0) | 2025.03.25 |