나돌 IP 옥돌
클라이언트 Internet 서버
end to end : node to node : 종단 <-> 종단
통신을 하기 위해서는 IP + PORT 가 필요가 한데요 ~
PORT가 필요한 이유는 서비스를 구분하기 위해서 입니다.
소켓(socket)의 필요성 : internet 을 경유하여 오는 데이터의 서비스 유형을 구분하기 위해서입니다.
Ipaddress -> 클라이언트 를 구분
tcp/udp port -> 서비스를 구분
port : well known port- 1~1024
대표적 ) telnet 23 ftp 20,21
예외적으로 well knwon 에 할당 된 포트를 변경하기도 합니다.
그 이유는
1) 보안에 취약하기 때문이고 (포트 번호를 이미알고 있기 때문이죠
옥돌이는 분홍색을 좋아해서 분홍옷을 입고 다닙니다. 그러면 단순히 다른 사람이
옥돌이를 해킹하려고 할 때 분홍색을 찾겠죠~ !)
2) 포트 번호가 낭비되어서 유동성이 없기 때문입니다.
그래서 1024 이후에 어떤 포트든 임의로 배정해주어도 괜찮습니다.
(TCP)옥돌 채팅방 FTP HTTP ORACLE DB DHCP DNS 옥돌 TV
TCP UDP
IP
TCP UDP
나돌 클라이언트 나돌 시청자 클라이언트
TCP를 사용해야 하는 이유
송신측 ) 다옥돌이 발전할 수 있는 시발점은 그의 열정과 ~ ~ 였습니다.
-> BYTE 단에서 누락이 발생
수신측 ) 다옥돌 ~ ~ && 시x ..
이렇게 될 수 잇습니다.
그래서 채팅 프로그램 같은 경우는 대부분 TCP를 사용하는 것이지요
안정성을 위해서요
그런데
유투브 실시간 채널이라던가
실시간 채팅 같은 경우에는 UDP 를 사용할 수 있지 않을 까 싶습니다.
클라이언트의 Request를 accept 할 수 있는 포트를 생성하는 행위 : binding ===> bind () ;
클라이언트 서버
bind ()
소켓생성 소켓 생성
listen()
connect() accept()
---SYN----->
<-----ACK----
<-----SYN----
-----ACK---->
(3 way handshake)
Session established
Send() Output Input Send()
Receive() Receive()
Input Output
보조스트림 보조 스트림 ---> Thread/ Thread pool
close()
---FIN---->
<-----ACK----
<-----FIN----
close wait
-----ACK---->
shut down
(4 way handshake)
thread pool --> string pool
번외)
String str1 = "hello";
String str2= "hello";
--> str1 == str2 -> true
같은 값을 가리키고 있어서 true가 됩니다.
str3 ="hello" 여도
같은 값을 가리키고 있기 때문에 true가 됩니다.
그러면 이때 heap 영역에 string pool 를 만들어서
hello 를 넣어둔다면 어떤 장점이 있을까요 ??
1. 메모리 활용 자유로움 (메모리 추가할당 안함 )
2. 시간 더 빨라짐 (pool 에 요원이 대기 바로 시킴 )
'네트워크' 카테고리의 다른 글
STP Intro / 스위치의 기본 통신방식 , loop 구조 / (0) | 2020.01.09 |
---|---|
기술 면접 (0) | 2020.01.08 |
DHCP(Dynamic Host Configuration Protocol) / 로드 밸런싱 (Load Balance) (0) | 2020.01.07 |
네트워크 이중화와 클라우드 개념 (0) | 2020.01.07 |
채팅 프로그램 서버 구조 (0) | 2020.01.06 |